正则表达式检查匹配不起作用

时间:2013-10-27 01:37:58

标签: jquery regex

以下是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的内容以显示正则表达式是否通过。不工作。我做错了什么?

1 个答案:

答案 0 :(得分: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');
    }
});