Вот код в 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, чтобы показать, прошло ли регулярное выражение. Не работает. Что я делаю не так?
Измените определение регулярного выражения следующим образом:
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');
}
});
raw_text.match(valid_lic_num)
. Кроме того, вы хотите, чтобыvalid_lic_num
был регулярным выражением, а не строкой.if (valid_lic_num.test(raw_text))