将javascript正则表达式转换为asp.net vb

时间:2012-07-02 16:08:33

标签: javascript .net regex

我正在使用以下正则表达式验证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的帮助都将受到赞赏。

2 个答案:

答案 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} $