Регулярное выражение, содержащее буквы и пробелы указанным способом - PullRequest
0 голосов
/ 02 мая 2020

Я работаю над обработкой текста API в java. Мне нужно сопоставить строки, которые:

  1. Длина не менее 8 символов.
  2. Должны содержать только заглавные буквы, строчные буквы или пробелы .
  3. Между буквами не должно быть пробелов. Однако они могут быть ведущими или отставать. Строка также может содержать только пробелы не менее 8.

Регулярное выражение, которое я пробовал, но не получилось:

  1. ^\s*[a-zA-Z]{8,}\s*$

Демонстрация моих попыток в здесь .

Любая помощь будет приветствоваться.

1 Ответ

2 голосов
/ 02 мая 2020

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

^(?=.{8,}) *[a-zA-Z]* *$

Объяснение вышеуказанного регулярного выражения:

  1. ^ - обозначает начало тестовой строки.
  2. (?=) - положительный прогноз.
  3. .{8,} - любой символ, кроме новой строки, длиной не менее 8.
  4. * - 0 или более пробелов для совпадения с начальными пробелами. (\ S избегается)
  5. [a-zA-Z]* - 0 или более букв (прописными или строчными). (Вы можете использовать [a-z]* вместе с флагом i (без учета регистра). Хотя не повлияет на производительность .)
  6. * - 0 или более пробелов в чтобы соответствовать концевым пробелам. (\ s избегается)
  7. $ - обозначает конец тестовой строки.

Выше регулярного выражения демо .

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