Как проверить выражение в JavaScript? - PullRequest
1 голос
/ 09 марта 2010

У меня есть выражение в формате {ГГГГ} - {ММ}, и у меня есть текстовое поле, в которое я приму ввод от пользователя.

Пользователь должен ввести в вышеуказанном формате, например: {2010} - {03} или {10} - {3} или {2010} - {3}

Как мне проверить это с помощью JavaScript?

Спасибо

Ответы [ 4 ]

2 голосов
/ 09 марта 2010

Для этого вам придется использовать регулярное выражение. Смотрите это.

1 голос
/ 09 марта 2010
if ( /{\d{2,4}}-{\d{1,2}}/.test( str_date ) == true ) {
  // ok
}
else {
  // fail
}
1 голос
/ 09 марта 2010

Чтобы добавить немного подробностей в ответ Sarfraz, ваш пример даст следующее регулярное выражение:

var str = "2010-03".match(/\{\d{2,4}\}-\{\d{1,2}\}/g);

он даст вам массив с соответствующей частью, если он совпадает.

0 голосов
/ 09 марта 2010

Вы будете сопоставлять ввод с регулярным выражением:

if(myInput.value.match(/\{\d+\}-\{\d+\}/)) {
  // input validated
} else {
  // validation failed
}

Это регулярное выражение можно настроить в зависимости от того, что вам нужно. Вот краткое руководство по регулярному выражению JavaScript: http://www.w3schools.com/js/js_obj_regexp.asp.

Кроме того, если вы хотите проверить, является ли ввод действительной датой, у вас будет дополнительная работа. Похоже, вы принимаете все, что выглядит как год-месяц, поэтому вы можете попробовать это:

if(myInput.value.match(/\{(\d+)\}-\{(\d+)\}/)) {
  var year = parseInt(RegExp.$1);
  var month = parseInt(RegExp.$2);
  if(month<1 || month>12) return false;
  if(year < 100) year += 2000;
  if(year > 3000) return false;
  return true;
} else {
  // validation failed
  return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...