Короткое / упрощенное регулярное выражение с или условие - PullRequest
0 голосов
/ 23 апреля 2019

Я написал следующее регулярное выражение для проверки следующих условий:

  • Комбинация, по крайней мере, одного lowerCase az с заглавными буквами AZ
  • Комбинация, по крайней мере, одного lowerCase az сцифра 0-9
  • Комбинация хотя бы одного UpperCase AZ с цифрой 0-9
((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9]))

Допустимые значения: -

  • aA

  • a1

  • A1

Есть ли способ короткого замыкания /упростить это регулярное выражение?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Будет ли ([a-z]+[A-Z])|(([a-z]+|[A-Z]+)[0-9]) то, что вы ищете?

0 голосов
/ 23 апреля 2019

Если я правильно понимаю, правила можно перефразировать так:

  • Ввод должен состоять только из буквенно-цифровых символов
  • Отклонить любой ввод, который состоит только из цифр
  • Отклонить любой ввод, который состоит только из строчных букв
  • Отклонить любой ввод, который состоит только из заглавных букв

Ваше регулярное выражение не проверяет начало / конец ввода и не проверяет, что все символы являются буквенно-цифровыми (.* слишком широк), поэтому оно будет принимать недопустимые вводы.

Вы можете сделать это так:

^(?!\d*$|[A-Z]*$|[a-z]*$)[a-zA-Z\d]*$

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