проверка на соответствие правила не работает

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, чтобы показать, прошло ли регулярное выражение. Не работает. Что я делаю не так?

  • 2
    Вы делаете это наоборот. Вы хотите raw_text.match(valid_lic_num) . Кроме того, вы хотите, чтобы valid_lic_num был регулярным выражением, а не строкой.
  • 1
    попробуйте if (valid_lic_num.test(raw_text))
Теги:

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');
    }
});
  • 0
    Вот и все. Новичок в regex, и он сначала попробовал test, и, очевидно, он провалился из-за кавычек, но я этого не осознавал.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню