2012-04-13 7 views
2

では動作しません、私は以下のように、VS2003のWebアプリケーションでのTextBox1という名前のTextBoxコントロール、Webフォームを確認するためにRegularExpressionValidatorコントロールを使用します。使用倍ポジティブ先読みの.Net 1.1

<asp:TextBox id="TextBox1" runat="server"></asp:TextBox> 
<asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ErrorMessage="Fromat error." 
ValidationExpression="^(?=.*[0-9])(?=.*[a-zA-Z]).{8,10}$" ControlToValidate="TextBox1"></asp:RegularExpressionValidator> 

とき私は入力文字列「qwer1asd」、それは一致しません。しかし、同じ正規表現:

^(?=.*[0-9])(?=.*[a-zA-Z]).{8,10}$ 

... JavaScriptで一致します。どうすれば修正できますか?

答えて

1

は、この正規表現を試してみてください:

^(?=.{8,10}$)(?=.*[0-9])(?=.*[a-zA-Z]).+$ 

このような正規表現は、それがサーバー上で働いていても、クライアントに失敗する原因となった(hereを説明した)のInternet Explorerの古いバージョンにはバグがあります。 (これは、あなたが記述しているものとは逆に思えますが、あなたの正規表現が失敗する理由は他にはありません。)最初の先読みに長さチェックを移動することは、バグに対する実証済みの回避策です。

+0

ありがとうございます。はい、IE6/7/8/9を使用してブラウズしようとしましたが、IE6/7は失敗しましたが、IE8/9は正しいです。あなたの答えを使用すると、IE6/7/8/9は正しいものでした。ありがとう。 – smartleos

関連する問題