регулярное выражение для запрета пробелов при запуске - PullRequest
1 голос
/ 19 октября 2011

Регулярное выражение, позволяющее использовать только алфавиты, а цифры и пробелы только между алфавитами с максимальным размером 20 .

([a-zA-Z0-9]+([\\s][a-zA-Z0-9]+)*){0,20}.

Это не позволяет пустое пространство при запуске, но это не проверка условия максимального размера.Как я могу изменить это регулярное выражение?

Ответы [ 3 ]

5 голосов
/ 19 октября 2011

Вы указываете 20 повторений всего шаблона. Я предполагаю, что вы, вероятно, имеете в виду что-то вроде

[a-zA-Z0-9][\\sa-zA-Z0-9]{0,19}

Если необходимо разрешить пустой ввод, оберните все это в (...)?.

3 голосов
/ 19 октября 2011

Все виды способов написать это, и так как вы используете Java, почему бы не использовать "функцию" Java regex? : D

String regexString = "(?<!\\s+)[\\w\\s&&[^_]]{0,20}";

Разбитый, это говорит:

(?<!\\s+)  # not following one or more whitespace characters,
[          # match one of the following:
  \\w      # word character (`a-z`, `A-Z`, `0-9`, and `_`)
  \\s      # whitespace characters
  &&[^_]   # EXCEPT FOR `_`
]          # 
{0,20}     # between 0 and 20 times

Он будет соответствовать a-z, A-Z, 0-9 и пробелам, даже если \ w в противном случае будет содержать подчеркивания, дополнительная часть там говорит, что НЕ подчеркивает - я думаю, это уникально для Java ... в любом случае это было весело!

0 голосов
/ 19 октября 2011

Регулярное выражение ниже:

boolean foundMatch = subjectString.matches("(?i)^(?=.{1,20}$)[a-z0-9]+(?:\\s[a-z0-9]+)*$");

будет соответствовать строке от 1 до 20 символов, начиная с буквенно-цифрового символа, за которым следует один пробел и несколько буквенно-цифровых символов. Обратите внимание, что строка должна заканчиваться буквенно-цифровым символом, а не пробелом.

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