Как построить регулярное выражение проверки с проверкой символов начала и конца? - PullRequest
1 голос
/ 27 марта 2019

как построить явное регулярное выражение для строки с алфавитом в начале и подчеркиванием или цифрой в середине и алфавитом или цифрой в конце?

шаблон, который до сих пор пробовали, можно увидеть здесь с тестовыми примерами.https://regex101.com/r/JedpJu/3

Я хочу отфильтровать строки следующим образом.

_ (только подчеркивание)

9a_d (строка начинается с цифр)

ad_ (заканчивается символом подчеркивания)

EDIT

ad * d_rr (любые специальные символы, кроме подчеркивания, также не допускаются.)

1 Ответ

1 голос
/ 27 марта 2019

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

^[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?$

, что совпадает с

^[A-Za-z](?:\w*[A-Za-z0-9])?$

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

В Java вы можете использовать его с .matches() и опускать якоря:

s.matches("[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?")
s.matches("[A-Za-z](?:\\w*[A-Za-z0-9])?")

Если строка может содержать разрывы строк, используйте

s.matches("(?s)[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?")
s.matches("(?s)[A-Za-z](?:\\w*[A-Za-z0-9])?")

, где (?s) позволяет . сопоставлять символы разрыва строки.

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