正则表达 - 验证电子邮件

时间:2016-03-08 10:29:30

标签: pcre

我不明白这一点。我希望有人能解释一下。

我正在编写客户网站的用户注册表。

我正在寻找一个正则表达式来验证电子邮件ID。

我在其中一个网站上发现了这个。下面是表达式 -

/ ^ \ W +([.-] \ W +?)的 @ \ W +([.-] \ W +?)(\ W {2,3}。)+ $ /; < / p>

我不明白为什么作者在整个表达式中多次用反斜杠()转义句点(。),即使分隔符是斜杠(/)。

我的理解是,只有当我们想在表达式中使用分隔符时,我们才必须使用反斜杠转义。

请帮助理解

1 个答案:

答案 0 :(得分:0)

您提到的有关转义分隔符的规则可能基于您正在编写的语言(perl?),因为分隔符(/)字符是&#34;特殊的&#34;在该语言的上下文中(或至少在使用该语言的正则表达式模式的上下文中)。

但是,在正则表达式模式本身的上下文中有几个特殊字符,其中一个是与任何字符匹配的句点(。)字符。因此,如果要匹配正则表达式中的实际句点,则必须使用反斜杠将其转义为正则表达式解析器,而不是语言解析器。

例如,在您提供的模式中,没有最后一个字符分组中的句点转义((.\w{2,3})+$),正则表达式将匹配任何字符(.),后跟2或3个字符( \w = AZ,az,0-9或_)一次或多次(+ =前一组,字符集等中的一个或多个。)。

因此,如果没有反斜杠,最后一个字符分组模式匹配&#34; .bc&#34;,&#34; .bcd&#34;,&#34; abcd&#34;。但是,当使用反斜杠(\.)转义句点时,它将成为一个字面句点,并且该格式不再匹配&#34; abcd&#34;。