我正在使用以下正则表达式验证javascript中的电子邮件地址文本框: -
var regex = /^[\_]*([a-z0-9]+(\.|\_*)?)+@([a-z][a-z0-9\-]+(\.|\-*\.))+[a-z]{2,6}$/i;
我还需要在asp.NET(4)VB站点的后端运行它以防止注入。
当我将它转换为我认为它应该用于.NET并在http://myregextester.com/中运行时设置为使用.NET和VB它通过: -
^[_]*([a-z0-9]+(.|_*)?)+@([a-z][a-z0-9\-]+(.|-*.))+[a-z]{2,6}$
然而,当我把它放在我的代码中时,它不起作用: -
If (Not Regex.IsMatch(theEmail, "^[_]*([a-z0-9]+(.|_*)?)+@([a-z][a-z0-9\-]+(.|-*.))+[a-z]{2,6}$")) Then
Return False
Else
Return True
End If
任何有关转换为VB的帮助都将受到赞赏。
答案 0 :(得分:2)
将\-
替换为-
^[_]*([a-z0-9]+(.|_*)?)+@([a-z][a-z0-9-]+(.|-*.))+[a-z]{2,6}$
并设置RegexOptions.IgnoreCase
。自设置/i
以来。
此处i
表示IgnoreCase
。
您的代码将是
If (Not Regex.IsMatch(theEmail, "^[_]*([a-z0-9]+(.|_*)?)+@([a-z][a-z0-9-]+(.|-*.))+[a-z]{2,6}$", RegexOptions.IgnoreCase)) Then
Return False
Else
Return True
End If
答案 1 :(得分:1)
似乎正则表达式之间的唯一区别是原始的使用文字点\.
而第二个使用点.
元字符。元字符将匹配任何内容,字面点将匹配点字符。
尝试将逃生放回到点上。
你的两个正则表达式,
旧
^ [\_]*
(
[a-z0-9]+
( \. | \_* )?
)+
@
(
[a-z] [a-z0-9\-]+
( \. | \-*\. )
)+
[a-z]{2,6} $
新
^ [_]*
(
[a-z0-9]+
( . | _* )?
)+
@
(
[a-z] [a-z0-9\-]+
( . | -*. )
)+
[a-z]{2,6} $