首页 > 解决方案 > 正则表达式 /b 单词边界查找单词不起作用

问题描述

具体是如何/b工作的?我需要在一个句子中找到一个单词的完全匹配。我有以下正则表达式和测试:

const values = 'sports is good'
const values2 = 'I\'m a sportsman' // shoud not match
const values3 = 'I\'ve done my bisports today' //shoud not match

function match(values) {
  return values.match(new RegExp('sports' + '\\b', 'i')) ? true : false
}

alert(match(values)) //true
alert(match(values2)) // false
alert(match(values3)) // I expect this to be false coz it isn't really an exact match

为什么第三次警报是真的?我预计那是错误的,因为bisports不是真的sports

标签: javascriptregex

解决方案


在您的正则表达式中,您只在单词末尾包含了一个单词边界。

在开头添加一个以仅匹配确切的单词:

  return values.match(new RegExp('\\b' + 'sports' + '\\b', 'i')) ? true : false;

这是一个完整的片段:

const values1 = 'sports is good';
const values2 = 'I\'m a sportsman';
const values3 = 'I\'ve done my bisports today';

function match(values) {
  return values.match(new RegExp('\\b' + 'sports' + '\\b', 'i')) ? true : false;
}

console.log(match(values1)); // true
console.log(match(values2)); // false
console.log(match(values3)); // false


推荐阅读