Проверка правильности RegEX 14 цифр с разделителем тире - PullRequest
0 голосов
/ 13 ноября 2018

Я использую следующее регулярное выражение ^[\d]{4}[-]?[\d]{6}[-]?[\d]{4}$, чтобы проверить 14 чисел как целое или разделить как

4 digits - 6 digits - 4 digits

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

  • 1111-111111-1111 - (действует в соответствии с моей бизнес-логикой)
  • 12341234561234 - (действует в соответствии с моей бизнес-логикой)
  • 1111-111111111 - (я хочу, чтобы это не было действительным)
  • 1111111111-1111 - (я хочу, чтобы это не было действительным)

Ответы [ 3 ]

0 голосов
/ 13 ноября 2018

Просто используйте или с рисунком или 14 цифрами.

var re = /^(\d{4}-\d{6}-\d{4}|\d{14})$/

function test(str) {
  console.log(str, re.test(str))
}

['1234-123456-1234', '12341234561234',
'1234-1234561234', '1234123456-1234'].forEach(test)
0 голосов
/ 13 ноября 2018

^ ([\ d] {4} [-] [\ d] {6} [-] [\ d] {4}?) | ([\ D] {16}) $

Надеюсь, это поможет! у него есть два регулярных выражения, одно с лишним, другое с целым числом (16 цифр)

0 голосов
/ 13 ноября 2018

Вы можете сделать негативный взгляд на шаблоны, которые вы не хотите сопоставлять, и использовать это регулярное выражение,

^(?!\d{4}-\d{10})(?!\d{10}-\d{4})\d{4}-?\d{6}-?\d{4}$

Объяснение:

  • ^ -> Начало строки
  • (?!\d{4}-\d{10}) -> Отрицательный прогноз, чтобы избежать сопоставления с этим шаблоном
  • (?!\d{10}-\d{4}) -> Отрицательный просмотр, чтобы избежать сопоставления с этим шаблоном
  • \d{4}-?\d{6}-?\d{4} -> Соответствует шаблону, как вы хотели
  • $ -> Конец строки

Демо

Другой шаблон, который я могу придумать, более простой и элегантный, вы можете использовать это,

^\d{4}(-?)\d{6}\1\d{4}$

Объяснение:

  • ^-> Начало строки
  • \d{4} -> Соответствует ровно четырем цифрам
  • (-?) -> Соответствует необязательному дефису и захватывает в группе 1
  • \d{6} -> соответствует ровно шести цифрам
  • \1 -> Это гарантирует, что оба дефиса либо присутствуют, либо отсутствуют, как указано в регулярном выражении
  • \d{4} -> соответствияровно четыре цифры
  • $ -> Конец строки

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...