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