0

我知道这一定非常简单,但是......尝试匹配 2 个用例:

它可以匹配这个(精确)

var re = new RegExp("\\b" + name + "\\b");

或匹配这个(与上面相同,但必须以空格开头)

var re = new RegExp("^ \\b" + name + "\\b");


实际上问题是字符串可以包含多个由空格分隔的条目,如下所示

" somevar1 somevar2 somevar3 "

因此,当我们传递name到上面的正则表达式时,我们希望它匹配at the beginning of the string with a space或者at the beginning without space..当我们不匹配字符串的开头(其余部分)时,我们不测试前导空格

基本上这个"^ \\b" + name + "\\b|\\b" + name + "\\b"

4

3 回答 3

1

不知道为什么你的第一个正则表达式对这两种情况都不起作用。但我想这就是你要找的东西:

"(^ )?\\b" + name + "\\b"
于 2013-11-12T21:57:45.833 回答
1

好的,你可以使用这个模式:

new RegExp("(?:^ |\\b)" + name + "\\b");

细节:

(?:       # non capturing group
    ^[ ]  # start of the string followed by a space
  |       # OR
    \\b   # word boundary
)         # close the non capturing group

在这里,您可以选择以空格开头的字符串和单词边界(可以是,例如.nameor#namename

with " ?\\b" + name,因为空格是可选的,你可以name在字符串的开头。

于 2013-11-12T22:09:39.387 回答
0

我想你需要这样的东西:

new RegExp("^ ?\\b" + name + "\\b");

或像这样:

new RegExp("^ *\\b" + name + "\\b");
于 2013-11-12T21:57:58.613 回答