7

Javascriptフォームの検証で!@#$%^&*()_ + <>?'"{} []などの特殊文字をチェックする正規表現ステートメントを作成しようとしています(失敗しています)。

これはおそらく1000回尋ねられたことがあると思いますが、私は深刻な時間的プレッシャーにさらされています。以下の質問に答えたくなくて、上記の質問に対する前の答えの方向に私を向けることができれば、私はそれを大いに感謝します。

同様のメモで、小文字の「abc」などを入力すると、次のエラーが発生する理由を誰かに教えてもらえますか?私は困惑しています。

jQuery.validator.addMethod("specialChars", function( value, element ) {
        var regex = new RegExp("^[a-zA-Z0-9]+$");
        var key = String.fromCharCode(event.charCode ? event.which : event.charCode);

        if (!regex.test(key)) {
           event.preventDefault();
           return false;
        }
    }, "please use only alphanumeric or alphabetic characters");
4

3 に答える 3

33

独自のカスタム メソッドをゼロから作成する代わりに、additional-methods.jsファイルを含めてalphanumericルールを使用します。

$(document).ready(function () {

    $('#myform').validate({
        rules: {
            field: {
                alphanumeric: true
            }
        }
    });

});

デモ: http://jsfiddle.net/YsAKx/


追加の外部ファイルを含めたくない場合は、デフォルトのalphanumericメソッドをコピーするだけです...

jQuery.validator.addMethod("alphanumeric", function(value, element) {
    return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, and underscores only please");
于 2013-02-19T03:29:41.163 に答える
10

変更はほとんどありません

jQuery.validator.addMethod("specialChars", function( value, element ) {
        var regex = new RegExp("^[a-zA-Z0-9]+$");
        var key = value;

        if (!regex.test(key)) {
           return false;
        }
        return true;
    }, "please use only alphanumeric or alphabetic characters");
  1. テストが有効な場合は、値 true を返す必要があります
  2. バリデーターはイベント ハンドラーではないため、使用できませんevent.preventDefault()。これはkeypressイベントで行う必要があります。
  3. validate メソッドに渡された値をテストする必要があります。

デモ:フィドル

注:+ワイルド キャラクタを使用しているため、テキスト ボックスには少なくとも 1 文字が必要です。ルールを使用して 2 つのルールに分割し、ワイルド キャラクタを にrequired変更することをお勧めし*ます。

于 2013-02-19T03:25:44.120 に答える
2
^[a-zA-Z0-9;,.!@#$%:{}[]?"^&*()/\']*|[^&;<>\`]*

この [] 中かっこに特別な文字を追加し^[a-zA-Z0-9;,.!@#$%:{}[]?"^&*()/\']たいのですが、ここにこの部分を追加したくない[^&;<>\]`

于 2017-01-09T05:26:46.750 に答える