1

我正在使用以下正则表达式来验证 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 的帮助将不胜感激。

4

2 回答 2

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
于 2012-07-02T16:12:49.863 回答
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} $ 
于 2012-07-02T16:47:58.243 回答