Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.01.2017, 12:51
Новичок на форуме
Отправить личное сообщение для korm Посмотреть профиль Найти все сообщения от korm
 
Регистрация: 11.01.2017
Сообщений: 2

Регулярное выражение
Здравствуйте.

Пытаюсь практиковаться в написании регулярных выражений, однако результат не очень ясен. Подскажите, пожалуйста, почему так?
console.log(/[0-3]?\d-[0-1]?\d-[0-2]\d{3}/.test("45-12-1991"));

Результат будет true, хотя я указал диапазон первого символа [0-3]
При этом если взять и 12 изменить на 22, то результат будет false, хотя это идентичные условия.
Предполагаю, что это из-за "?", но тогда не ясно, почему во втором числе все нормально проверяется.
Ответить с цитированием
  #2 (permalink)  
Старый 11.01.2017, 14:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,218

Сообщение от korm
Предполагаю, что это из-за "?"
Так и есть.

Что вообще ты там собрался проверять?
Ответить с цитированием
  #3 (permalink)  
Старый 11.01.2017, 14:03
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,218

Если это проверка даты - так есть "стандарты".
Цитата:
Дата в формате DD/MM/YYYY:
(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d
https://habrahabr.ru/post/123845/
Ответить с цитированием
  #4 (permalink)  
Старый 11.01.2017, 14:03
Аспирант
Отправить личное сообщение для fuckingquest Посмотреть профиль Найти все сообщения от fuckingquest
 
Регистрация: 28.10.2016
Сообщений: 70

Сообщение от korm
Результат будет true, хотя я указал диапазон первого символа [0-3]
потому что ? означает есть или нет, регулярка начинает матчить с \d
re = /[0-3]?\d-[0-1]?\d-[0-2]\d{3}/
str = "45-12-1991"

console.log(str.match(re)[0])

//>>>> 5-12-1991

Сообщение от korm
При этом если взять и 12 изменить на 22, то результат будет false, хотя это идентичные условия.
console.log("-12-".match(/-[0-1]?\d-/))
console.log("-22-".match(/-[0-1]?\d-/))

//>>>> [ '-12-', index: 0, input: '-12-' ]
//>>>> null

как то так, вроде
Ответить с цитированием
  #5 (permalink)  
Старый 11.01.2017, 14:24
Новичок на форуме
Отправить личное сообщение для korm Посмотреть профиль Найти все сообщения от korm
 
Регистрация: 11.01.2017
Сообщений: 2

Благодарю за разъяснения
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение tata4ka Общие вопросы Javascript 4 15.11.2014 00:56
Регулярное выражение и метод test tsigel Общие вопросы Javascript 3 30.08.2013 13:47
регулярное выражение literator Ваши сайты и скрипты 1 18.08.2013 18:24
Регулярное выражение: любой символ, включая перевод строки Gleb Общие вопросы Javascript 3 28.07.2011 12:15
регулярное выражение theo_ Общие вопросы Javascript 15 21.06.2010 10:29