Регулярное выражение, только если оно находит совпадения n + раз - PullRequest
1 голос
/ 13 апреля 2020

У меня есть следующее регулярное выражение:

/^(\b[A-Z0-9]\w*\s*)+$/

, которое я использую для сопоставления названий постов, в которых каждое слово пишется с заглавной буквы, и это прекрасно работает, но я хочу, чтобы оно возвращало true только если оно совпадает 3 раза или больше (или в основном, если заголовок содержит более 3 слов), так как я не хочу, чтобы он ловил базовые c заголовки или отдельные слова.

Я не могу понять это, когда я попробуйте следующее регулярное выражение, ничто не соответствует:

/(^(\b[A-Z0-9]\w*\s*)+$){3,}/

Любая помощь будет принята с благодарностью, так как я не могу понять, что я делаю неправильно.

В основном это требует 2 вещей: 1 ) Название должно содержать не менее 3 слов. 2) Каждое слово в заголовке должно быть заглавным (первая буква заглавной).

1 Ответ

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

Это будет соответствовать 3 последовательным заглавным словам

(?:[A-Z][a-z]+(?: |\?|,|:|!|-|$)+){3,}

Объяснение

(?:...) означает, что это несоответствующая группа

[A-Z][a-z]+ заглавное слово

( |\?|,|:|!|-|$)+, за которым следует любой из этих символов, хотя бы один раз

(...){3,} Соответствие этим условиям не менее 3 раз

Демо

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