Объедините 2 группы JavaScript RegEx с AND и квантификатором - PullRequest
1 голос
/ 09 мая 2019

К сожалению, я тщетно пытаюсь написать подходящий JavaScript RegEx, который соответствует следующему случаю:

  1. он соответствует одной строке, а не многострочному.
  2. ТОЛЬКО положительно, если строка содержит менее 6 слов
  3. И , если она содержит любое из слов "Там", "Это", "Собака" .

RegEx для 2-х пунктов, вероятно:

^(\s*\S+(?:\s+\S+){1,4}\s*)$ демо

RegExдля 3 точки, вероятно, это:

^(?=.*(There\b|\This\b|\bDog)).*$ демо

Теперь у меня есть проблема, чтобы объединить это 2 регулярное выражение в одно.Я пробовал что-то вроде: ^(\s*\S+(?:\s+\S+){1,5}\s*)(?=.*(There\b|\bThis\b|Dog)).*$ демо

Как я могу объединить там 2 RegEx правильно?

Некоторые примеры:

Hello I am under 6 words-> отрицательное, без триггерного слова

Hello I am under dog words -> положительное до 6 слов + триггерное слово (собака)

Hello I am dog but with a longer string -> отрицательное, потому что более 6 слов

Dog -> положительный, до 6 слов + триггерное слово (собака)

1 Ответ

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

Вы можете поместить предположение со второго регулярного выражения после ^ в первом регулярном выражении и использовать границы слов вокруг чередования:

^(?=.*\b(?:There|This|Dog)\b)\s*\S+(?:\s+\S+){1,5}\s*$

См. Демоверсию regex . Обратите внимание на нечувствительный к регистру модификатор в демоверсии (/^(?=.*\b(?:There|This|Dog)\b)\s*\S+(?:\s+\S+){1,5}\s*$/i).

Соответствует строкам из 6 слов или менее, которые должны содержать There, This или Dog как целые слова.

См. График регулярных выражений :

enter image description here

enter image description here

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