Регулярное выражение для фиксированного числа букв с пробелом между - PullRequest
1 голос
/ 27 февраля 2020

Я хочу иметь регулярное выражение, которое фильтрует строку, в которой допустимы только 4 буквы и, если необходимо, пробел между ними, затем снова 4 буквы и т. Д.

OK: 
abcd efgh ijkl mnop
aasd asdd
asda

Not OK:
abcsd asda
asd asdd asdd
asdd asdd asdds
asdd  asdd  asds

До сих пор я мог сопоставить только первые 4 буквы слова с пробелом или без.

^(| )[a-z\s]{0,4}$(| )

Так что это не получается после того, как я добавляю символ или другой пробел, например, asdf s <- fails. Чего мне не хватает? Спасибо!

1 Ответ

3 голосов
/ 27 февраля 2020

Шаблон, который вы пробовали, соответствует необязательному пробелу в начале и в конце, и может соответствовать 0-4 раза символам z или пробелам и может также соответствовать пустой строке, поскольку все необязательно.

Шаблон может соответствовать 4 раза az и повторяться 0+ раз через пробел, после чего 4 раза az

^[a-z]{4}(?: [a-z]{4})*$

Regex demo

Примечание , что в первой строке ijklm означает 5 символов вместо 4, а \s также может соответствовать новой строке.

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