NodeJS 如何在JavaScript中使用indexOf或includes仅匹配精确的单词

gfttwv5a  于 2022-12-22  发布在  Node.js
关注(0)|答案(4)|浏览(313)

我想使用javascript只搜索字符串中的特定单词,但是使用match、indexOf或includes无法正常工作。

let str = "Widget test";

   if (~str.indexOf("Widge")) {
    console.log( 'Found it!' );
    }

它将打印找到它,因为它不匹配整个单词,只匹配子字符串。如果只匹配小部件,我如何返回它找到
但我想要的是:
如果输入字符串= Widget,则输出= true
如果输入字符串= Widge,则输出= false

8nuwlpux

8nuwlpux1#

要精确匹配单词,可以使用正则表达式。
/\bWidget\b/将匹配整个字。
在您的示例中:

let str = "Widget";

if (str.search(/\bWidget\b/) >= 0) {
 console.log( 'Found it!' );
}
3pvhb19x

3pvhb19x2#

你也可以试试这个。

let str = "Widget test";
if(str.split(" ").indexOf('Widge') > -1) {
    console.log( 'Found it!' );
}
nwlls2ji

nwlls2ji3#

在试图回答这个问题的时候,正确的答案被提供了。而且也有点不清楚OP到底想要什么。
......所以同时我写了这个可怕的~hack~解决方案:

const matchType = (source = '', target = '') => {
  const match = source.match(target) || [];
  return (!isNaN(match.index) && !!~match.index)
    ? match.input === target ? 'complete' : 'partial'
    : 'none';
};

console.log(matchType('foo', 'bar'));
console.log(matchType('foo', 'fo'));
console.log(matchType('foo', 'foo'));

现在你可以有三种不同类型的比赛,是不是很酷?:D

scyqe7ek

scyqe7ek4#

如果未找到字符串,则indexOf将返回-1,以便您可以检查索引是否不等于找到字符串的-1

function match(){
var test = "Widget test";
if (test.indexOf("widget")!= -1) {
  alert( 'Found it!' );
}else{
alert( 'Sorry,not Found it!' );
}
}
<!DOCTYPE html>
<html>
<body>

<button type="button" onclick="match()">Click Me!</button>

</body>
</html>
let str = "Widget test";

if (str.indexOf("wi")!= -1) {
  console.log( 'Found it!' ); 
}

相关问题