Шаблон регулярного выражения Javascript с фиксированной длиной, начальными пробелами и цифрами - PullRequest
2 голосов
/ 20 марта 2019

Мне нужен шаблон регулярного выражения, который соответствует строке фиксированной длины (шесть символов) цифр с начальными пробелами.Пробелы (ноль или максимум 5) всегда находятся слева от строки.Цифры (1 или макс. 6) всегда находятся справа.Итак:

"     4" is valid
"123456" is valid too

"12    " is not valid
"  12  " is not valid
"12  34" is not valid
"      " is not valid

Я пробовал с /^( ){0,5}(\d){1,6}$/, но это не работает, потому что он не проверяет общую длину строки.Я пробовал также /^( |\d){6}$/, но он не проверяет положение пробелов / цифр.Теперь я застрял, я знаю, что есть решение, но я не могу найти ни себя, ни поиск в Интернете.Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Вы можете использовать положительный прогноз (?=, чтобы установить длину 6 символов:

^(?=.{6}$)[ ]{0,5}[0-9]{1,6}$

Объяснение

  • ^ - начало строки
  • (?=.{6}$) Позитивный взгляд, утверждающий, что прямо справа - 6 символов, и конец строки.
  • [ ]{0,5}[0-9]{1,6} Соответствует пробелу 0-5 раз, соответствует цифре 1-6 раз
  • $ Конец строки

Regex demo

0 голосов
/ 20 марта 2019

Это должно работать

^(?:\d{6}|\s\d{5}|\s{2}\d{4}|\s{3}\d{3}|\s{4}\d{2}|\s{5}\d{1})$

или только для пробелов

^(?:\d{6}| \d{5}| {2}\d{4}| {3}\d{3}| {4}\d{2}| {5}\d{1})$

Может быть более элегантный способ сделать это, но он проверяет все комбинации пробелов и цифр.

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