Почему это регулярное выражение не вызывает ошибку в Javascript? - PullRequest
0 голосов
/ 30 июня 2010

Я немного запутался в различных форматах регулярных выражений.

Следующие методы вызывают ошибку.

function validateDate(str)  {
    var expr = /^((((0?[1-9]|[12]\d|3[01])[\/](0?[13578]|1[02])[\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\/](0?[13456789]|1[012])[\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\/]0?2[\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\/]0?2[\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
    return validate(expr, str);
}

function validateTime(str)  {
    var expr = /^([0-1]?[0-9]|[2]?[0-3])\:([0-5][0-9])$/;
    return validate(expr, str);
}

function validate(pattern, str) {
    return str.match(pattern);
}

Я взял следующие регулярные выражения из Интернета.Я думаю, что проблема касается некоторых escape-символов

Что здесь не так?

Спасибо:)

1 Ответ

3 голосов
/ 30 июня 2010

В функции validateDate вы назначаете объект регулярного выражения переменной exp, но в следующей строке вы используете переменную expr, которая не определена.

Edit:

Что вы ожидаете от функций? Прямо сейчас они возвращают массив совпадений. Если вы хотите, чтобы они просто возвращали true или false, вы можете вместо этого использовать метод test:

function validate(pattern, str) {
  return pattern.test(str);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...