質問

私が取り組んでいる ASP.Net 2.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

単語数を取得するためのより完全かつ正確な方法を持っている人はいますか?

役に立ちましたか?

解決 2

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

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

アップデート:上記にはいくつかの欠陥があったため、最終的にこの正規表現を使用することになりました。

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

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

他のヒント

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

私は正規表現に少し慣れているので、ご安心ください。

(\b.*\b){0,10}

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top