Javascript Date Regex например2010-06-03 - PullRequest
1 голос
/ 30 июня 2010

Я хочу функцию, которая проверяет даты формата в заголовке. что не так с моей функцией?

function validateDate(date) {
 var pattern = new RegExp("^\d{4}-\d{2}-\d{2}$");
 if (pattern.test(date))
  return true;
 return false;
}

спасибо! * * 1004

Ответы [ 3 ]

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

Вам нужно либо использовать объект регулярного выражения: /^\d{4}-\d{2}-\d{2}$/, либо экранировать обратную косую черту: "^\\d{4}-\\d{2}-\\d{2}$".

Кроме того, это регулярное выражение не будет выполнено, если в строке есть что-то еще, кроме даты (например,пробел).

Таким образом,

var pattern = /^\s*\d{4}-\d{2}-\d{2}\s*$/;

может быть лучшей ставкой.

Это регулярное выражение (конечно) не будет проверять действительные даты, только для строк, которые состоят изчетыре цифры, дефис, две цифры, еще один дефис и еще две цифры.Возможно, вы захотите

  1. сделать необязательные начальные нули (т. Е. Использовать \d{1,2} вместо \d{2})
  2. выполнить проверку фактической даты вне регулярного выражения.

Вы можете (вроде) проверять даты с помощью регулярных выражений, но они не очень красивые.Еще хуже, если вы хотите учитывать високосные годы или ограничить диапазон дат.

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

Вот что вы можете придумать с помощью: RegexBuddy (не проверено мной):

function validateDate(date) {
var pattern = new RegExp("(19|20)[0-9]{2}[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])");
var match = pattern.exec(date);
if (match != null) {
    return true;
} else {
   return false;    
}

}

- Reinhard

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

Это работает, однако это будет проверять даты как 9999-99-99.

function validateDate( date )
{
  return /^\d{4}\-\d{2}\-\d{2}$/.test( date )
}

console.log( validateDate ( '2010-01-01' ) ); // True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...