Как минимум одно число с существующим регулярным выражением - PullRequest
2 голосов
/ 19 июня 2020

Мои условия ...

  1. Alpha-Numeri c значение
  2. Допускается только один пробел или дефис
  3. Должно быть хотя бы одно число
  4. Не может начинаться или заканчиваться пробелом или дефисом
  5. Минимум 2 символа, максимум 16 символов без пробела / дефиса

На данный момент я подготовил регулярное выражение

^(?=.{2,16}$)([a-zA-Z\d]+)([\s^\-]|[\-^\s]|[a-zA-Z\d]*)([a-z[A-Z\d]+)

Отсутствует только третья точка.

Тестовые строки Действительны

"test one"
"test 2two"
"test3 three222"
"3test-4four"

Недействительны

"-test"
"test-d f"

1 Ответ

1 голос
/ 19 июня 2020

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

^(?=(?:[a-zA-Z\d][ -]?){2,16}$)(?=[^\d\n]*\d)[a-zA-Z\d]+(?:[ -][a-zA-Z\d]+)?$

RegEx Demo

PS: Обратите внимание, что test one является недопустимой строкой, так как не 't have any di git.

RegEx Details:

  • ^: Start
  • (?=(?:[a-zA-Z\d][ -]?){2,16}$): положительный просмотр вперед чтобы убедиться, что у нас есть от 2 до 16 буквенно-цифровых символов c символов
  • (?=\D*\d): положительный просмотр вперед, чтобы убедиться, что у нас есть хотя бы один di git
  • [a-zA-Z\d]+(?:[ -][a-zA-Z\d]+)?: сопоставление любой тест, который начинается с буквенно-цифровых c, необязательно с одним пробелом или дефисом и заканчивается буквенно-цифровыми c
  • $: Конец
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...