1

入力値に少なくとも1つのドットが含まれていることを確認する必要があるため、次を使用しました。

<asp:RegularExpressionValidator runat="server" 
ControlToValidate="MyInput" Text="*" 
ErrorMessage="must contain at least one dot" 
ValidationExpression="\.+" />

そして、それは機能しません。ページソースを調べると、ASP.NETがバックスラッシュ文字をエスケープしていることがわかります。そのため、java-scriptでは次のようになり"\\.+"ます。なぜそうするのですか?RegularExpressionValidatorがエスケープしないようにするにはどうすればよいですか?

4

2 に答える 2

1

バックスラッシュは JavaScript と正規表現の両方でエスケープ シーケンスに使用されるため、ダブル エスケープが必要です。この点を説明する簡単なテスト:

alert('42'.match("\d"));     // no match
alert('42'.match("\\d"));    // match

しかし、それはあなたの問題を解決しません。トラブルシューティングの最初のステップ: 検証式を に変更しaます。「foo」で失敗して「bar」を渡しませんか?そうでない場合は、ページに何か問題があります。関連のない JavaScript のバグが原因で、検証コードがスキップされる可能性があります。

少しトピックから外れています: 検証式は\.(プラスなしで) にトリミングできます。これは、実際には単一のドットの一致のみを気にするためです。

于 2010-03-16T09:53:39.700 に答える
1

入力に少なくとも 1 つのドットが含まれているかどうかを確認する場合は、式が正しくありません。ドットのみで構成される入力のみに一致します。

使用する必要があります

.*\..*

エスケープも問題になる場合は、[.]代わりに を使用して\.ください。

RegularExpressionValidator は空のフィールドを検証しないことに注意してください。これを行うには、RequiredFieldValidator を使用します。

于 2010-03-16T09:55:28.447 に答える