如何在JavaScript中匹配整个单词?

48

我想通过文本框搜索一个完整的单词。比如说,如果我搜索“me”,我应该能找到文本中所有出现的“me”单词,但不包括类似“memmm”的单词。

我正在使用JavaScript的search('my regex expression')进行当前搜索(但没有成功)。

尽管有几个建议使用\b开关(但好像不起作用),我仍然发布了修订版本的问题说明:

出于某种原因,这似乎行不通。假设以下是JavaScript搜索文本:

var lookup = '\n\n\n\n\n\n2    PC Games        \n\n\n\n';
lookup  = lookup.trim() ;
alert(lookup );

var tttt = 'tttt';
alert((/\b(lookup)\b/g).test(2));

移动行是必要的


2
你的代码正在字符串“2”中查找“lookup”。 - Kobi
4个回答

78
为了使用动态正则表达式,请查看我的更新代码:
new RegExp("\\b" + lookup + "\\b").test(textbox.value)

你的具体示例是反过来的:

alert((/\b(2)\b/g).test(lookup));

Regexpal

Regex Object


var str = "pc+pc2/pc2+pc2*rr+pd"; var res = str.match(new RegExp("([\\W])pc2([\\W])",'g')); 我想要的是 +pc2/, +pc2*/pc2+ - Dhaduk Mitesh
@ChaosPandion,你有任何想法吗? - Dhaduk Mitesh
我想检查特殊字符前后是否存在。问题在于第一个匹配中“/”被删除了。因此,在那之后,它从“pc2+pc2*rr+pd”开始检查。我没有得到“/pc2+”。 - Dhaduk Mitesh
注意:在JavaScript中,\b单词边界只支持ASCII字符。 - hitautodestruct

30
使用单词边界断言 \b
/\bme\b/

10
你可以使用以下代码:
var stringTosearch ="test ,string, test"; //true
var stringTosearch ="test string test"; //true
var stringTosearch ="test stringtest"; //false
var stringTosearch ="teststring test"; //false

if (new RegExp("\\b"+"string"+"\\b").test(stringTosearch)) {
  console.log('string found');
  return true;
} else {
  return false;
}

3
<script type='text/javascript'>
var lookup = '\n\n\n\n\n\n2    PC Games        \n\n\n\n';
lookup  = lookup.trim() ;
alert(lookup );
                var tttt = 'tttt';
                alert((/\b(lookup)\b/g).test(2));

</script>

我有点难以理解你在这里想要做什么。变量tttt的作用是什么?

你想要在哪个字符串中进行搜索?你是想在字符串lookup中查找2吗?那么你需要:

/\b2\b/.test(lookup)

下面的正则表达式由你的表达式构建而成,它包含一个单词边界,接着是字符串 "lookup"(不是变量lookup中的值),然后又是一个单词边界。然后它尝试将这个正则表达式与字符串"2"匹配,该字符串是将数字2转换为字符串得到的。
(/\b(lookup)\b/g).test(2)

例如,以下代码返回true:
(/\b(lookup)\b/g).test("something to lookup somewhere")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接