【发布时间】:2017-04-03 20:31:48
【问题描述】:
注意。我只想知道它是否是正则表达式定义中未转义连字符的有效应用。这不是关于匹配电子邮件、连字符或反斜杠的含义、量词或其他任何内容的问题。另外,请注意,链接中的答案并没有真正讨论转义/非转义连字符之间的有效性问题。
通常我这样声明匹配电子邮件地址的正则表达式。
var emailPattern = /^[a-z.\-_]+@[a-z]+[.]{1}[a-z]{2,3}$/;
emailPattern.test('ss.a_a-@ass.com');
现在,我的一位同事错误地忘记了转义字符,并且 **still* 使它起作用,这让我感到惊讶,因为连字符的间隔含义。看起来像这样。
var weirdPattern = /^[a-z._-]+@[a-z]+[.]{1}[a-z]{2,3}$/;
weirdPattern.test('ss.a_a-@ass.com');
显然,它有效,因为连字符是括号中的最后一个字符。我的问题是,这只是一个巧合还是一个有效的语法?我一辈子都在正则表达式错误吗?
【问题讨论】:
-
我一辈子都在用正则表达式做错了吗? - 你是在逃避,但这不是错。
标签: javascript regex email