Javascript 正则表达式匹配完整单词,但在第一次失败时根本不匹配

Javascript 正则表达式匹配完整单词,但在第一次失败时根本不匹配,javascript,regex,Javascript,Regex,我正在寻找一个JS正则表达式来匹配完整的单词,但如果有任何不同的单词(任何失败),则根本不匹配 例如:匹配\b(狗|猫)\b cat-dog-cat-->一切都匹配。嗯 dog-->dog即使此处不存在cat,也会匹配。嗯 dog cata-->dog匹配,cata不匹配。我根本不想要火柴。这就是你想要的吗 说明: ^ : beginning of the string (?: : start non capt

我正在寻找一个JS正则表达式来匹配完整的单词,但如果有任何不同的单词(任何失败),则根本不匹配

例如:匹配
\b(狗|猫)\b


cat-dog-cat
-->一切都匹配。嗯

dog
-->
dog
即使此处不存在
cat
,也会匹配。嗯

dog cata
-->
dog
匹配,
cata
不匹配。我根本不想要火柴。

这就是你想要的吗

说明:

^                       : beginning of the string
  (?:                   : start non capture group
      (?=.*\bdog\b)     : positive lookahead, zero-length assertion, make sure we have dog somewhere in the string
      (?=.*\bcat\b)     : positive lookahead, zero-length assertion, make sure we have cat somewhere in the string
      .*                : 0 or more any character
    |                   : OR
      cat               : cat alone
    |                   : OR
      dog               : dog alone
  )                     : end group
$                       : end of string
var测试=[
“狗猫”,
“猫狗”,
“狗”,
“猫”,
“狗卡塔”,
“猫鱼”,
];
console.log(test.map)(函数(a){
返回a+'=>'+a.match(/^(?:((?=.*\bdog\b)(?=.*\bcat\b)。*|猫|狗)$/);

}));所以,基本上,您希望检查字符串中的所有单词是否与
regex
匹配,或者所有字符串都应该来自字符串列表,不是吗?让我们拆分所有单词,并检查它们是否都属于您的字符串列表

var reg=/dog | cat | rat/,
input1=“狗猫老鼠”,
input2=“狗卡塔鼠”,
input3=“abcd efgh”,
isMatched=s=>!(s.match(/\s+/g)| |[])。一些(e=>!(新的RegExp(e).test(reg));
console.log(isMatched(input1));
console.log(isMatched(input2));

console.log(isMatched(input3))请参阅。只需删除
(?i)
。是的,但这与单独的“测试”不匹配。在帖子中添加了更多详细信息。请参阅,这仍然是一个关于
狗鱼
?这是您想要的吗?正则表达式是由单个字符串(用空格或“\s+”分隔)构建的。这只是为了获取单词。然后我用实际的正则表达式测试了每个单词