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”
不一样吗。我会说是的,但在我的代码中,它们的行为都不同