Javascript 如何在JS中匹配整个单词?
我搜索了很多问题,想找到一种只匹配整个单词的正则表达式。我想出了几个答案和问题,但其中很多都不是我需要的 例如,SO上一个评分最高的问题出现在该解决方案中: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(“登录”); }否则{ 控制台。登录(“
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
更适合您的用例。