1

単語を 5 ~ 15 文字の英数字と照合したいのですが、_ と - の文字も含めることができます。入力の値を取得するために JQuery を使用しています。CoffeeScript でプログラミングしています。

username = $('#register input[name="user"]').val()
if ( ! username.match('/^([\w_\-]{5,15})$/'))
    alert(username)

JSでコンパイルされたものはこれです:

username = $('#register input[name="user"]').val();
if (!username.match('/^([\w_\-]{5,15})$/')) {
     return alert(username);
}

true を返すはずの "dsdsfsdsf" のような文字列でアラートを受け取ります。実際、一致しようとすると、すべての文字列が false を返します。私は何を間違っていますか?

4

1 に答える 1

3

変化する

if ( ! username.match('/^([\w_\-]{5,15})$/'))

if ( ! username.match(/^([\w_\-]{5,15})$/))

正規表現リテラルを引用符で囲んではなりません。

文字列を単純にテストしたいので、より高速なテストを使用することをお勧めします。キャプチャ グループは必要ありません。

if (!/^[\w_\-]{5,15}$/.test(username))
于 2013-04-04T11:18:50.710 に答える