1

次の正規表現を使用して、JavaScriptのメールアドレステキストボックスを検証しています:-

var regex = /^[\_]*([a-z0-9]+(\.|\_*)?)+@([a-z][a-z0-9\-]+(\.|\-*\.))+[a-z]{2,6}$/i;

インジェクションを防ぐために、asp.NET(4)VBサイトのバックエンドでも実行する必要があります。

.NETの場合と思われるものに変換し、.NETとVBを使用するように設定されたhttp://myregextester.com/で実行すると、次のようになります。

^[_]*([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

正規表現の唯一の違いは、元の正規表現がリテラルドットを使用しているの\.に対し、2番目の正規表現はドットメタ文字を使用していること.です。メタ文字は何にでも一致し、リテラルドットはドット文字に一致します。

エスケープをドットに戻してみてください。

あなたの2つの正規表現、

 ^ [\_]* 
 (
      [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 に答える