将2个JavaScript RegEx组与AND和量词结合在一起

时间:2019-05-09 08:24:12

标签: javascript regex

不幸的是,我徒劳地编写了一个适合以下情况的合适的JavaScript RegEx:

  1. 它与单行字符串而不是多行字符串匹配。
  2. 为正数,如果字符串包含的单词少于6个
  3. AND ,如果它包含“那里”,“此”,“狗”中的任何一个字词

两点的正则表达式可能是:

^(\s*\S+(?:\s+\S+){1,4}\s*)$ demo

3点的RegEx可能是:

^(?=.*(There\b|\This\b|\bDog)).*$ demo

现在我有问题将这2个正则表达式组合为一个。我已经尝试过类似的东西: ^(\s*\S+(?:\s+\S+){1,5}\s*)(?=.*(There\b|\bThis\b|Dog)).*$ demo

我如何正确地将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 :(得分:0)

您可以将第一个正则表达式中^之后的第二个正则表达式的行距放在第一行,并在交替处使用单词边界:

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

请参见regex demo。请注意演示(/^(?=.*\b(?:There|This|Dog)\b)\s*\S+(?:\s+\S+){1,5}\s*$/i)中不区分大小写的修饰符。

它匹配6个单词或更少的字符串,且整个单词必须包含ThereThisDog

请参见regex graph

enter image description here

enter image description here