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 回答