Регулярное выражение для проверки количества слов меньше 100 - PullRequest
1 голос
/ 13 октября 2019

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

^(?:\b\w+\b[\s\r\n]*){0,100}$

, но как только я набрал какой-то специальный символ, такой как точка (.) Или запятая (,), выражение не сработало. enter image description here

Ответы [ 2 ]

1 голос
/ 13 октября 2019

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

^\s*(?:\S+(?:\s+\S+){0,99}\s*)?$

Если должно присутствовать хотя бы одно слово, удалите внешнюю (?: / )? опциональную не захватывающую группирующую конструкцию:

^\s*\S+(?:\s+\S+){0,99}\s*$

Подробности:

  • ^ - начало строки
  • \s* - 0 или более пробелов
  • \S+ - 1 или более непробельных символов
  • (?:\s+\S+){0,99} - от 0 до 99 повторений 1 или более пробелов, за которыми следуют 1 или более непробелов
  • \s* - 0 или более пробелов
  • $ - конец строки.

Для подсчета только слов, состоящих из символов слов, замените каждый \s на \W и каждый \S на \w.

0 голосов
/ 13 октября 2019

[Редактировать: как уже упоминалось в комментариях, это регулярное выражение имеет ограничения. Пожалуйста, используйте решение, предлагаемое в принятом ответе.]

Попробуйте это: ^(?:[\b\w\b;:,\.]+[\s\r\n]*){0,100}$

При необходимости добавьте другие возможные знаки препинания и не алфавитно-цифровые символы, где вы видите ;:,\..

Редактировать: осталось 4 в регулярном выражении, когда я тестировал с меньшим количеством слов. Заменено на 100, как указано в вопросе.

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