Javascript 在字符串中查找单词的索引(不是单词的一部分)

标签 javascript regex search indexof text-search

我目前正在使用 str.indexOf("word") 在字符串中查找单词。 但问题是它还返回其他单词的部分内容。

示例:“我去了 foobar 并订购了 foo。” 我想要单个单词“foo”的第一个索引,而不是 foobar 中的 foo。

我无法搜索“foo”,因为有时它后面可能会跟一个句点或逗号(任何非字母数字字符)。

最佳答案

你必须为此使用正则表达式:

> 'I went to the foobar and ordered foo.'.indexOf('foo')
14
> 'I went to the foobar and ordered foo.'.search(/\bfoo\b/)
33

/\bfoo\b/ 匹配被单词边界包围的 foo

要匹配任意单词,构造一个 RegExp 对象:

> var word = 'foo';
> var regex = new RegExp('\\b' + word + '\\b');
> 'I went to the foobar and ordered foo.'.search(regex);
33

关于Javascript 在字符串中查找单词的索引(不是单词的一部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12773913/

相关文章:

jquery - 搜索表单 css 类加载两次并影响 ajaxcomplete 函数后的位置

javascript - 如何去除除部分元素以外的所有元素?

javascript - 从二进制缓冲区 Javascript 的一部分创建类型化数组

javascript - 范围错误: Maximum call stack size exceeded when I create a project in Meteor

javascript - 设置值时未触发纸张输入更改事件

javascript - 使用正则表达式从 url 的参数中获取 id

java - 正则表达式从字符串中删除不带 <br/> 制表符的 HTML 标签

javascript - 正则表达式生成类似货币的格式

javascript - 打字和搜索,如何提高性能?

php - 搜索数组并删除不包含 A-Z 或带破折号的 A-Z 的条目