web-dev-qa-db-ja.com

正規表現文字ブラケットにハイフンを含めますか?

$.validator.addMethod('AZ09_', function (value) { 
    return /^[a-zA-Z0-9.-_]+$/.test(value); 
}, 'Only letters, numbers, and _-. are allowed');

test-123のようなものを使用すると、ハイフンが無効であるかのようにトリガーされます。 \---を試しました

53
ParoX

\-を使用したエスケープは問題ありませんが、文字クラスの先頭または末尾に配置することもできます。これはあなたのために働くはずです:

/^[a-zA-Z0-9._-]+$/
85
Mark Byers

\--文字範囲内。テストしたように見えなかったときに引用できますか?動作しているようだから: http://jsbin.com/odita

2
T.J. Crowder

サーバーから文字列全体を渡したため、\-はおそらく機能していませんでした。その場合は、最初に\をエスケープして、サーバー側プログラムでも処理できるようにする必要があります。

  • サーバー側の文字列:\\-
  • クライアント側:\-
  • 正規表現(カバー):-

または、[]と[]の括弧に単に置くことができます。

ハイフンを一致させるより一般的な方法は、ハイフンとダッシュの文字クラスを使用することです(引用符なしの「\ p {Pd}」)。さまざまな文化やソースのテキストを扱っている場合、1文字だけでなく、より多くの種類のハイフンが出回っていることがあります。 []式内に追加できます

0
Radu Simionescu