Regex验证(RegularExpressionValidator和Javascript)不起作用

Regex validation (RegularExpressionValidator and Javascript) not working

本文关键字:Javascript 不起作用 RegularExpressionValidator 验证 Regex      更新时间:2023-09-26

我遇到了Asp:RegularExpressionValidator的问题。当验证(客户端)发生时,它显示浏览器中的[无效限定符]错误。我认为,这与一些逃跑角色有关,但尝试了几次后就没能成功。所以,寻求帮助!!!!

regex是关于验证电子邮件地址的,可以从http://msdn.microsoft.com/en-us/library/01escwtf%28v=vs.90%29.aspx#Y0.更重要的是,如果这个链接没有打开,regex就像这个

^(?("")(""[^""]+?""@)|(([0-9a-zA-Z](('.(?!'.))|[-!#'$%&''*'+/='?'^`'{'}'|~'w])*)(?<=[0-9a-zA-Z])@))(?('[)('[('d{1,3}'.){3}'d{1,3}'])|(([0-9a-zA-Z][-'w]*[0-9a-zA-Z]'.)+[a-zA-Z]{2,6}))$

有人能建议如何解决这个问题并使验证正常工作吗?

注意:我已经尝试过用Javascript代码直接粘贴regex,看看它是否在那里工作。为测试而编写的代码类似于,var match=new RegExp(emailRegex).exec(emailAddressValue);

另一个注意事项:将正则表达式粘贴到C#代码中,并使用regex在服务器端执行验证,效果很好!因此,javascript和regex确实有些问题无法正常工作。

我不是C#爱好者,但这看起来不像是标准的正则表达式转义引号。。。试试这个:

^(?:('")('"[^'"]+?'"@)|(([0-9a-zA-Z](('.(?!'.))|[-!#'$%&''*'/='?'^`'{'}'|~'w])*)(?<=[0-9a-zA-Z])@))(?:('[)('[('d{1,3}'.){3}'d{1,3}'])|(([0-9a-zA-Z][-'w]*[0-9a-zA-Z]'.)+[a-zA-Z]{2,6}))$

在这里看到它的作用,(非常奇怪的捕获组…)

我怀疑问题出在模式语法上,javascript不支持look-behind。就我个人而言,这个模式看起来有点过于明确。正如前面提到的,电子邮件地址RFC是非常宽松的。

我注意到您的模式还要求域的结尾最多为6个字符。如果你真的想涵盖所有的边缘案例,你必须考虑像博物馆TLD 这样的东西

就我个人而言,我发现像这样更宽容的模式更有效。

'S+@('w+'.)+[a-zA-Z]{2,}