3

私が取り組んでいるASP.Net2.0プロジェクトの要件では、特定のフィールドを最大10語(文字ではない)に制限しています。現在、次のServerValidateメソッドでCustomValidatorコントロールを使用しています。

Protected Sub TenWordsTextBoxValidator_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles TenWordsTextBoxValidator.ServerValidate
    '' 10 words
    args.IsValid = args.Value.Split(" ").Length <= 10
End Sub

誰かが単語数を取得するためのより徹底的/正確な方法を持っていますか?

4

3 に答える 3

5

単語をカウントする正規表現で組み込みのバリデーターの1つを使用できます。

私は正規表現で少し錆びているので、私に気楽に行ってください:

(\b.*\b){0,10}
于 2008-09-09T18:55:57.867 に答える
1

この正規表現はうまく機能しているようです:

"^(\b\S+\b\s*){0,10}$"

更新:上記にはいくつかの欠陥があったため、最終的にこの正規表現を使用しました:

[\s\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\xBF]+

split()その正規表現の文字列を取得し、結果の配列の を使用してlength正しい単語数を取得します。

于 2008-09-09T19:48:51.360 に答える
0

私はマレンの答えに投票し、それについてもコメントしましたが、コメントはデフォルトで非表示になっているので、もう一度説明させてください。

カスタムバリデーターではなく正規表現バリデーターを使用する理由は、正規表現バリデーターが、使用可能な場合はjavascriptを使用して正規表現クライアント側も自動的に検証するためです。検証に合格した場合、それは大したことではありませんが、誰かがクライアント側の検証に失敗するたびに、サーバーがポストバックを実行しないようにします。

于 2008-09-09T18:59:54.490 に答える