Javascript “的正则表达式”;“可能”;首先,但是;“必须”;跟随

Javascript “的正则表达式”;“可能”;首先,但是;“必须”;跟随,javascript,regex,Javascript,Regex,我知道这一定非常简单,但…尝试匹配两个用例: 它可以与此匹配(精确) var re=new RegExp(“\\b”+name+“\\b”) 或与此匹配(同上,但必须以空格开头) var re=new RegExp(“^\\b”+name+“\\b”) 实际上,问题是字符串可以包含多个由空格分隔的条目,如下所示 " somevar1 somevar2 somevar3 " 因此,当我们将name传递给上面的正则表达式时,我们希望它在字符串开头匹配带空格的,或者在没有空格的开头匹配。当我们不匹

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

它可以与此匹配(精确)

var re=new RegExp(“\\b”+name+“\\b”)

或与此匹配(同上,但必须以空格开头)

var re=new RegExp(“^\\b”+name+“\\b”)


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

" somevar1 somevar2 somevar3 "
因此,当我们将
name
传递给上面的正则表达式时,我们希望它在字符串开头匹配带空格的
,或者在没有空格的开头匹配
。当我们不匹配字符串开头(其余部分)时,我们不测试前导空格


基本上这是
“^\\b”+name+“\\b |\\b”+name+“\\b”

不确定为什么第一个正则表达式不能同时适用于这两种情况。但我想这就是你想要的:

"(^ )?\\b" + name + "\\b"

我想你需要这样的东西:

new RegExp("^ ?\\b" + name + "\\b");
new RegExp("^ *\\b" + name + "\\b");
或者像这样:

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

好的,您可以使用以下模式:

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
放在字符串的开头

第一个正则表达式不应该对这两种情况都有效吗?你能提供一些你想要匹配的例子吗(不提及任何正则表达式),只需在“(^)”内加上“^”使其成为可选的。请添加你匹配的例子。如果你不这样做,我们就帮不了你。请举例,举例说明你想做的事情!为什么要把
^
放在括号内?是的,我的评论中有空白,但不太明显。啊,对不起。将两者包装在paranthesis中,使它们可以一起选择。可能要将其更改为
(?:^)?
以隐藏结果。不,是我,我不明白你的想法,但现在可以了。的确,您可以使用非捕获组,但这不是必需的。谢谢,但我把代码弄错了!:)对我的特定代码有效的实际上是
“?\\b”+name+“\\b”
,但是
“\s”\\b”+name+“\\b”
没有。有什么区别吗?我以为\s是空间?再次感谢您提供的详细信息。然而,
“\s?\\b”+name+“\\b”
“?\\b”+name+“\\b”
不一样吗。我会说是的,但在我的代码中,它们的行为都不同