2

MVC 3 と knockoutjs ライブラリを使用してアプリケーションに取り組んでいます。また、ノックアウト検証プラグインを研究しています。許可された記号の入力テキスト値を検証する必要があります。私が見る限り、これらのネイティブ ルールは存在しないため、カスタム ルールを作成する必要があります。悪い点は、正規表現と JavaScript に関する私の知識が非常に乏しいことです。テキスト ボックスの入力フィールドを検証し、英語以外の文字を許可しないカスタム関数を作成する必要があります。その他の記号はすべて使用できます。カスタムルールを作成できると思いますが、入力フィールドを検証する正規表現が必要です。実際の例での助けは大歓迎です。ありがとう!

4

1 に答える 1

2

英語以外の文字は使用できません

他のすべての記号は許可されています

私には矛盾しているようですが、私は助けようとします:)

通常、サーバー側の言語は Unicode のサポートがはるかに優れているため、最初に検証に Ajax を使用することを検討する必要があります。それができない場合は、最初にUnicode プラグインを含む XRegExpライブラリをページに追加します。

Unicode 対応の正規表現を作成するには、次の形式を使用します。

var englishLettersOrSymbols = XRegExp('[\\p{^Letter}\\p{Latin}]*');

ここでは、ゼロまたは複数の ( ... *) 記号を受け入れ、各記号は ( [ ... ]) 非文字 ( \\p{^Letter}) または基本的なラテン アルファベットの文字 ( ) のいずれかであると言い\\p{Latin}ます。

カスタム検証ルールは次のようになります。

ko.validation.rules['englishLettersOrSymbols'] = {
    validator: function(value){
        var rule= XRegExp('[\\p{^Letter}\\p{Latin}]*');
        return rule.test(value);
    },
    message: 'Sorry, {0} this is not valid'
};

そして、次のようにコードで使用します。

var vewModel = {
    // ...
    myField: ko.observable().extend({englishLettersOrSymbols: true}),
    // ...
};

編集:|正規表現から削除されました。ありがとう、@slevithan。すでにシンボルが含まれているため、それ自体はエラーではなく、正規表現は引き続き機能します。しかし、それはかなり誤解を招くものでした。\\p{^Letter}|

于 2012-05-14T13:58:38.400 に答える