Регулярное выражение для соответствия слов определенной длины - PullRequest
50 голосов
/ 28 января 2012

Я хотел бы знать, чтобы регулярное выражение соответствовало словам так, чтобы слова имели максимальную длину. Например, если длина слова не превышает 10 символов, я бы хотел, чтобы регулярное выражение совпадало, но если длина превышает 10, то регулярное выражение не должно совпадать.

Я пытался

^(\w{10})$

но это приносит мне совпадения, только если минимальная длина слова составляет 10 символов. Если слово содержит более 10 символов, оно по-прежнему соответствует, но соответствует только первым 10 символам.

Ответы [ 4 ]

58 голосов
/ 28 января 2012

Я думаю, что вы хотите \w{1,10}\b.\b соответствует границе слова.

Конечно, вы также можете заменить \b и сделать ^\w{1,10}$.Это будет соответствовать слову не более 10 символов, если оно является единственным содержимым строки.Я думаю, что это то, что вы делали раньше.

Поскольку это Java, вам действительно придется избежать обратной косой черты: "\\w{1,10}\\b".Вы, наверное, уже знали это, но до меня дошло.

35 голосов
/ 28 января 2012
^\w{0,10}$ # allows words of up to 10 characters.
^\w{5,}$   # allows words of more than 4 characters.
^\w{5,10}$ # allows words of between 5 and 10 characters.
22 голосов
/ 29 января 2012

Длина символов для сопоставления.

{n,m}  n <= length <= m
{n}    length == n
{n,}   length >= n

И по умолчанию, двигатель жадный, чтобы соответствовать этому шаблону. Например, если введено значение 123456789, \ d {2,5} будет соответствовать 12345 длиной 5.

Если вы хотите, чтобы двигатель возвращался при совпадении длины 2, используйте \ d {2,5}?

0 голосов
/ 21 мая 2019

Даже, я искал то же регулярное выражение, но я хотел также включить все специальные символы и пробелы.Итак, вот регулярное выражение для этого:

^[A-Za-z0-9\s$&+,:;=?@#|'<>.^*()%!-]{0,10}$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...