在我的前端,我在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);
答案 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.