2009-03-25 11 views
0

次の正規表現を使用すると、regexlib.comで文字列 "2rocks"を使用してこれをテストすると、 "一致"が生成されます。しかし、私の.NETアプリケーションでは、正規表現バリデーターがバリデーションエラーを引き起こしています。Strange .NET Regexの問題

^(?=.*[A-Za-z])[[email protected]\-_\+\.]{6,32}$ 

私は自分のアプリケーションとregexlib.comの両方で「rocks2」に文字列を変更した場合、私は両方の場所で試合を取得します。

文字列の長さが6から32文字の間で、正規表現に含まれるA-Z、a-z、数字、およびその他の特殊文字を許可する正規表現を使用することを目標にしています。

ここではASPマークアップですが、私は全く混乱しています。

<asp:regularexpressionvalidator 
    id=vldRegEx_LoginID 
    runat="server" 
    ErrorMessage="Regex Error Message" 
    Display="Dynamic" 
    ControlToValidate="txtLoginID" 
    ValidationExpression="^(?=.*[A-Za-z])[[email protected]\-_\+\.]{6,32}$"> 
     <img src="images/error.gif" border="0"> 
</asp:regularexpressionvalidator> 

答えて

6

あなたが渡すValidationExpressionは、実際にはクライアントサイドのjavascript正規表現として使用される式です。 Javascript正規表現は、.NET正規表現のすべての機能をサポートしていないため、問題が発生しています。あなたは2つのオプションがあります。

    は、クライアント側の検証をオフにして唯一のサーバー側の検証を使用
  • はjavascriptの正規表現有効になるように正規表現を書き換え(バリデータのEnableClientScript = falseを設定)(javascriptの正規表現テスター:http://regexpal.com/
0

this bugで噛まれている可能性があります。 Lookaheadアサーションは、JavaScript RegExpでは避ける必要があります。