Регулярное выражение для строки из двух частей, разделенных точкой - PullRequest
0 голосов
/ 29 октября 2018

Мне нужно написать регулярное выражение для строки из двух частей, разделенных символом '.' Здесь ниже условия,

  1. << 1-я часть >>. << 2-я часть >>: Пример- Time01.Sheet
  2. 1-я часть должна содержать буквенно-цифровые символы и содержать как минимум 1 заглавный алфавит, 1 строчный алфавит и 1 цифру.
  3. 2-я часть должна содержать буквенно-цифровые символы.

Мой код : ((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=\\S+$).*)[.]([\\w]+)$

Ввод : Vijay.hello876IUY

Фактический результат : Valid data

Ожидаемый результат : Неверные данные (поскольку 1-я часть не содержит чисел)

Любой, пожалуйста, помогите мне решить эту проблему ...

1 Ответ

0 голосов
/ 29 октября 2018

Вы можете использовать

^(?=[^.]*[a-z])(?=[^.]*[A-Z])(?=[^.]*[0-9])[a-zA-Z0-9]+\.[a-zA-Z0-9]+$

См. Демоверсию regex .

Детали

  • ^ - начало строки
  • (?=[^.]*[a-z]) - должна быть строчная буква ASCII после 0+ символов, отличных от .
  • (?=[^.]*[A-Z]) - должна быть заглавная буква ASCII после 0+ символов, отличных от .
  • (?=[^.]*[0-9]) - после 0+ символов должна быть цифра, отличная от .
  • [a-zA-Z0-9]+ - 1+ буквенно-цифровых символов
  • \. - точка
  • [a-zA-Z0-9]+ - 1+ буквенно-цифровых символов
  • $ - конец строки.

В Java:

s.matches("(?=[^.]*[a-z])(?=[^.]*[A-Z])(?=[^.]*[0-9])[a-zA-Z0-9]+\\.[a-zA-Z0-9]+")

Поскольку matches() требует полного совпадения строки, вам не нужно ^ в начале и $ привязка в конце.

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