0

Jquery バリデーターを使用して、フィールドで spl 文字を禁止するルールを作成しています。

jQuery.validator.addMethod("noSpecialChar", function(value,element) {
    if(value.match(/[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]/)){
      return false;
    }else{
      return true;
    }
  }, "No Special Charaters are allowed.");

使用している正規表現が「\」バックスラッシュをキャプチャしていません。

誰かがこれについて私を助けてくれますか?

4

2 に答える 2

3

文字クラスにバックスラッシュを含める必要があります。

if(value.match(/[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/\\]/))

しかし、のような他の「特殊文字」は§どうですか? リストはほぼ無限です - おそらく、次の文字を除くすべての文字を除外したいでしょうA-Za-z0-9_:

if (value.match(/\W/))
于 2013-01-29T07:07:48.127 に答える
0

バックスラッシュ\はエスケープ文字であるため、正規表現 (または文字列) にリテラル バックスラッシュを含めるには、バックスラッシュ文字自体をエスケープする必要があります\\

あなたの文字クラスでは、文字クラスを閉じるメタ文字として解釈されないように、シングル\をエスケープするために使用されています。]

その中でエスケープする必要がある唯一のメタ文字であるため\、文字クラスの他の文字は不要です。、、、および文字クラスでエスケープする必要がある唯一の文字です。]
]\^-

すでに述べたように、指定されたグループ内にない文字を探して、許可されない文字を指定する方がよい場合があります。

/[^a-z\d\s]/i

a-zA-Z0-9または空白以外の文字を許可しません(\dは の略で0-9iは大文字と小文字を区別しないことを意味します)。

また、if-elseステートメント andの代わりに、match単に使用することもできます

return !value.test( /[^a-z\d\s]/i )

読みにくいかもしれませんが (!は呼び出しのブール結果を反転させtestます)。

于 2013-01-29T11:37:36.727 に答える