0

jQuery でのコードは次のとおりです。

    //Verify license number is only numbers
    $('lic_num').keyup(function() {
        var valid_lic_num = '/[0-9-]{3,20}/';
        var raw_text =  $(this).val();
        $('#status').html(raw_text);
        if (valid_lic_num.match(raw_text)) {
            $('#status').html('Password regex okay');
        } else {
            $('#status').html('License number regex failed');
        }
    });

目標は、ユーザーが 0 ~ 9 またはハイフン以外の文字を入力したときに、 #status の内容を変更して、正規表現が成功したかどうかを表示することです。動作していません。私は何を間違っていますか?

4

1 に答える 1

1

正規表現の定義を次から変更します。

var valid_lic_num = '/[0-9-]{3,20}/';

これに:

var valid_lic_num = /[0-9-]{3,20}/;

引用符で囲むと、JS インタープリターはそれを正規表現ではなく文字列にします。

また、.match()正規表現メソッドではなく、文字列メソッドです。.test()代わりに次のように使用できます。

//Verify license number is only numbers
$('lic_num').keyup(function() {
    var valid_lic_num = /[0-9-]{3,20}/;
    var raw_text =  $(this).val();
    $('#status').html(raw_text);
    if (valid_lic_num.test(raw_text)) {
        $('#status').html('Password regex okay');
    } else {
        $('#status').html('License number regex failed');
    }
});
于 2013-10-27T01:41:18.723 に答える