正则表达式验证(RegularExpressionValidator和Javascript)不起作用

时间:2012-02-06 05:36:48

标签: javascript regex email

我遇到了Asp问题:RegularExpressionValidator。当验证(客户端)发生时,它在浏览器中显示[无效量词]错误。我认为,这与某些逃避角色有某种关系,但在尝试几次尝试后无法使其工作。所以,寻求帮助!!!!

正则表达式是关于验证电子邮件地址并从http://msdn.microsoft.com/en-us/library/01escwtf%28v=vs.90%29.aspx#Y0找到。简而言之,如果此链接未打开,则正则表达式就像这样

^(?("")(""[^""]+?""@)|(([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代码粘贴正则表达式,看看它是否有效。写入测试的代码就像, var match = new RegExp(emailRegex).exec(emailAddressValue);

另一个注意事项:将正则表达式粘贴到C#代码中并使用Regex在服务器端执行验证效果很好!所以,有些东西真的不适用于javascript和regex。

2 个答案:

答案 0 :(得分:0)

我不是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}))$

在行动here中查看它,(非常奇怪的捕获组...)

答案 1 :(得分:0)

我怀疑问题是模式语法,javascript不支持后面看。 就个人而言,这种模式对我来说过于明显。如前所述,电子邮件地址RFC非常宽松。

我注意到您的模式还要求域以最多6个字符结尾。如果你真的想要涵盖所有边缘案例,你必须考虑.museum TLD

之类的事情

就个人而言,我发现这样一种更宽松的模式更有效。

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