Facebook注册表格电子邮件验证模式

时间:2013-05-01 13:07:03

标签: javascript regex facebook email-validation

在搜索RegExp模式以验证Javascript中的电子邮件地址时,我发现Facebook使用的模式来自here

function is_email(a){return /^([\w!.%+\-])+@([\w\-])+(?:\.[\w\-]+)+$/.test(a);}

有人可以向我解释这种模式是如何运作的吗?据我所知,它正在寻找三个位置的“单词字符”以及一个“@”字符。但是一个很好的解释将帮助我理解这一点。

1 个答案:

答案 0 :(得分:0)

有两个网站(我知道),它们为正则表达式模式生成解释。

以下是我对模式的解释:

^        # anchor the pattern to the beginning of the string; this ensures that
         # there are no undesired characters before the email address, as regex
         # matches might well be substrings otherwise
(        # starts a group (which is unnecessary and incurs overhead)
  [\w!.%+\-]
         # matches a letter, digit, underscore or one of the explicitly mentioned
         # characters (note that the backslash is used to escape the hyphen
         # although that is not required if the hyphen is the last character)
)+       # end group; repeat one or more times
@        # match a literal @
(        # starts another group (again unnecessary and incurs overhead)
  [\w\-] # match a letter, digit, underscore or hyphen
)+       # end group; repeat one or more times
(?:      # starts a non-capturing group (this one is necessary and, because
         # capturing is suppressed, this one does not incur any overhead)
  \.     # match a literal period
  [\w\-] # match a letter, digit, underscore or hyphen
  +      # one or more of those
)+       # end group; repeat one or more times
$        # anchor the pattern to the end of the string; analogously to ^

所以,这将是一个稍微优化的版本:

/^[\w!.%+\-]+@[\w\-]+(?:\.[\w\-]+)+$/