Javascript 正则表达式匹配完整单词,但在第一次失败时根本不匹配
我正在寻找一个JS正则表达式来匹配完整的单词,但如果有任何不同的单词(任何失败),则根本不匹配 例如:匹配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
\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+”分隔)构建的。这只是为了获取单词。然后我用实际的正则表达式测试了每个单词