Проверка правильности имени пользователя в Regex - PullRequest
0 голосов
/ 22 апреля 2020

Упомянутое ниже регулярное выражение используется для проверки ввода пользователя в Java.

username.matches("^\\p{L}+[\\p{L}\\p{Z}.']+")

Регулярное выражение работает для более чем одного ввода символов, но не для ввода одного символа.

Поскольку «+» обозначает один и более символов, я запутался, как поддерживать один ввод символов в качестве допустимого ввода.

Ответы [ 3 ]

2 голосов
/ 22 апреля 2020

Это потому, что обе части вашего регулярного выражения требуют, по крайней мере, одного символа каждая (см. + почти в конце регулярного выражения). Если вы хотите, чтобы эта часть была необязательной, вместо нее должна быть *.

1 голос
/ 22 апреля 2020

Регулярное выражение у вас будет соответствовать 2 или более символов. Причина в том, что это символ один (или более):

\\p{L}+

А это символ 2 (или более):

[\\p{L}\\p{Z}.']+

Скорее всего, вы хотите, чтобы последняя часть была «0 или больше», например:

"^\\p{L}+[\\p{L}\\p{Z}.']*"
1 голос
/ 22 апреля 2020

Ваше регулярное выражение требует минимум 2 символа.

"^ \ p {L} +" - минимум 1
"[\ p {L} \ p {Z}. '] + "- минимум 1

" + "обозначает один или несколько символов.

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