Javascript 如何在JS中匹配整个单词?

Javascript 如何在JS中匹配整个单词?,javascript,Javascript,我搜索了很多问题,想找到一种只匹配整个单词的正则表达式。我想出了几个答案和问题,但其中很多都不是我需要的 例如,SO上一个评分最高的问题出现在该解决方案中: let regx=new RegExp((^ |\s)元素模式(?=\s |$)”; 让text=“元素模式”; if(text.match(regx)){ console.log(“登录”); } text=“元素模式有变化”; if(text.match(regx)){ console.log(“登录”); }否则{ 控制台。登录(“

我搜索了很多问题,想找到一种只匹配整个单词的正则表达式。我想出了几个答案和问题,但其中很多都不是我需要的

例如,SO上一个评分最高的问题出现在该解决方案中:

let regx=new RegExp((^ |\s)元素模式(?=\s |$)”;
让text=“元素模式”;
if(text.match(regx)){
console.log(“登录”);
}
text=“元素模式有变化”;
if(text.match(regx)){
console.log(“登录”);
}否则{
控制台。登录(“未登录”);

}
我认为问题在于您正在从字符串创建一个RegExp对象。在常规JS字符串中使用反斜杠(\)时,它被解释为转义字符,因此
\s
变成了
s
。改为使用RegExp文本。您也可以跳过反斜杠,比如
newregexp((^ |\\s)元素模式(?=\\s |$)”
,但我更喜欢文字符号

let regx=/(^ |\s)元素模式(?=\s |$)/
让text=“元素模式”;
if(text.match(regx)){
console.log(“登录”);
}
text=“元素模式有变化”;
if(text.match(regx)){
console.log(“登录”);
}否则{
控制台。登录(“未登录”);

}
使用单词boundry<代码>\b这是一个转义问题。请尝试
/(^ |\s)元素模式(?=\s |$)/
新建RegExp((^ |\\s)元素模式(?=\\s |$)
。但是如上所述,
\b
更适合您的用例。