.NET与javascript

时间:2017-01-19 18:32:45

标签: javascript .net regex

在我的前端,我在javascript中有一个正则表达式来检测电子邮件是否正确。

^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$

.NET上的当前后端正则表达式验证是:

Regex.IsMatch(email, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase);

希望用javascript替换.NET正则表达式但是我在开头/结尾字符中真的“丢失了”。

在.NET正则表达式中,让\A\Z与我的javascript中的^$具有相同的效用吗?

我尝试按如下方式替换我的.NET正则表达式,但即使在Javascript中它是正确的,它也不会检测到有效的字符串:

Regex.IsMatch(email, @"\A(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))\Z", RegexOptions.IgnoreCase);

1 个答案:

答案 0 :(得分:2)

^ -   The match must occur at the beginning of the string or line. 
$ -   The match must occur at the end of the string or line, or before \n at the end of the string or line.
\A -  The match must occur at the beginning of the string only (no multiline support).
\Z -  The match must occur at the end of the string, or before \n at the end of the string.