【问题标题】:regular expression to validate one semicolon in front of an email正则表达式验证电子邮件前的一个分号
【发布时间】:2014-11-04 19:36:46
【问题描述】:

我只需要在一个电子邮件地址前匹配一个只有一个分号的实例。 如下:

;myemail@somedomain.com

正则表达式不应与以下内容匹配:

;myemail@somedomain.com;mysecondemail@somedomain.com

如何在正则表达式中匹配此模式? 任何帮助,将不胜感激。 谢谢

【问题讨论】:

  • 您还可以在这里看到哪些其他数据?因为如果它只是“一封电子邮件,或者一封前面有 ; 的电子邮件”,你可以盲目地替换 ';' '' 甚至根本不用正则表达式。

标签: javascript jquery regex string


【解决方案1】:

像使用正则表达式

^;\w+@\w+\.com$

http://regex101.com/r/mW5qZ9/3查看正则表达式的工作原理

【讨论】:

  • 明确一点,这还不足以验证电子邮件地址。这并不是一个看起来那么容易的问题。 regular-expressions.info/email.html
  • @jzila 正则表达式匹配一个非常基本的电子邮件。 Op 没有提供任何必须不得匹配的条件
  • 不验证电子邮件,只是验证电子邮件地址前面存在分号的模式,电子邮件地址将始终有效(假设)
  • 很公平,我只是想确保评论存在并进一步阅读,以防 OP 在他/她的电子邮件验证正则表达式中需要更大的稳健性。
  • @SariksaThapa 在这种情况下,您最好提供一些正则表达式必须匹配和不匹配的示例。这可能有助于形成正则表达式
【解决方案2】:

您似乎正在寻找积极的前瞻:匹配;,后跟非分号。

RegExp(/^;(?=[^;]+$)/).test(';')    // false
RegExp(/^;(?=[^;]+$)/).test(';x')   // true
RegExp(/^;(?=[^;]+$)/).test(';x;')  // false

RegExp(/^;(?=[^;]+$)/).test(';myemail@somedomain.com;mysecondemail@somedomain.com')
// -> false

RegExp(/^;(?=[^;]+$)/).test(';myemail@somedomain.com')
// -> true

如果你想匹配起始分号之后的电子邮件地址(正如你评论的那样),那么你不需要前瞻,只需一个常规匹配:

RegExp(/^;[^;]+$/).test(';myemail@somedomain.com;mysecondemail@somedomain.com')
// -> false

RegExp(/^;[^;]+$/).test(';myemail@somedomain.com')
// -> true

【讨论】:

  • 谢谢,但这只匹配第一个分号,我希望表达式匹配第一个分号和它后面的第一封电子邮件。但是,它不应该匹配具有多个电子邮件地址且前面带有分号的任何内容,例如 ;email@domain.com;email2@domain.com
  • @SariksaThapa 在这种情况下,我为此添加了另一个示例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 2014-06-22
相关资源
最近更新 更多