我不明白这一点。我希望有人能解释一下。
我正在编写客户网站的用户注册表。
我正在寻找一个正则表达式来验证电子邮件ID。
我在其中一个网站上发现了这个。下面是表达式 -
/ ^ \ W +([.-] \ W +?)的 @ \ W +([.-] \ W +?)(\ W {2,3}。)+ $ /; < / p>
我不明白为什么作者在整个表达式中多次用反斜杠()转义句点(。),即使分隔符是斜杠(/)。
我的理解是,只有当我们想在表达式中使用分隔符时,我们才必须使用反斜杠转义。
请帮助理解
答案 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;。