バックスラッシュをJavascriptでキャプチャする

Jqueryバリデーターを使用してフィールド内のスプラッシュ文字を禁止するルールを作成していますか?

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

正規表現は "\"バックスラッシュをキャプチャしていません。

何人かが私にこれを助けてくれますか?

0
nl ru de
このようにすべての特殊文字を除外するのではなく、英数字だけを許可できますか? [0-9a-zA-Z]
追加された 著者 Anirudh Ramanathan,
`\\`を正規表現文字に追加する
追加された 著者 user180100,

2 答え

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

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

しかし、§のような他の "特殊文字"はどうでしょうか?リストはほぼ無限にあります。 A-Za-z0-9 以外のすべての文字を除外したいと思うかもしれません。

if (value.match(/\W/))
3
追加された
@SriHarish: regex101.com をご覧ください。
追加された 著者 Tim Pietzcker,
除外するのに必要なのは、いくつかのスプラッシュ文字だけです。ヘルプありがとうございました。:)
追加された 著者 SriHarish,
奇妙に聞こえるかもしれませんが、あなたはこのようなオンラインツールを作ってください。
追加された 著者 SriHarish,

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

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

The other \ in your character class are unnecessary as the ] is the only metacharacter that needs to be escaped within it.
], \, ^ and - are the only characters that may need to be escaped in a character class.

すでに述べたように、特定のグループに属していない文字を検索することで、どの文字が許可されないかを指定する方がよい場合があります。

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

az 0-9 または空白( \ d は< code> 0〜9 、 i は大文字と小文字を区別しません)。

また、 if-else ステートメントと match ステートメントの代わりに、

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

test 呼び出しのブール結果を逆転させます)。

0
追加された