我知道这必须非常简单,但要匹配2种用例,必须使用...trying:
它可以与这个(精确)相匹配
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 ..when匹配--我们不匹配字符串的开头(其余部分),我们不测试前导空间
基本上这个"^ \\b" + name + "\\b|\\b" + name + "\\b"
发布于 2013-11-12 22:09:39
好的,您可以使用以下模式:
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在这里,您可以选择以空格开头的字符串和一个单词边界(可以是.name、#name或name)。
使用" ?\\b" + name时,由于空格是可选的,所以可以在字符串的开头使用name。
发布于 2013-11-12 21:57:45
不知道为什么第一次正则表达式在这两种情况下都不起作用。但我想这就是你要找的:
"(^ )?\\b" + name + "\\b"发布于 2013-11-12 21:57:58
我想你需要这样的东西:
new RegExp("^ ?\\b" + name + "\\b");或者像这样:
new RegExp("^ *\\b" + name + "\\b");https://stackoverflow.com/questions/19940679
复制相似问题