首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开始时表示“可能”,但后面跟着“必须”

开始时表示“可能”,但后面跟着“必须”
EN

Stack Overflow用户
提问于 2013-11-12 21:53:43
回答 3查看 297关注 0票数 0

我知道这必须非常简单,但要匹配2种用例,必须使用...trying:

它可以与这个(精确)相匹配

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

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

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

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

代码语言:javascript
复制
" somevar1 somevar2 somevar3 "

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-12 22:09:39

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

代码语言:javascript
复制
new RegExp("(?:^ |\\b)" + name + "\\b");

详情:

代码语言:javascript
复制
(?:       # non capturing group
    ^[ ]  # start of the string followed by a space
  |       # OR
    \\b   # word boundary
)         # close the non capturing group

在这里,您可以选择以空格开头的字符串和一个单词边界(可以是.name#namename)。

使用" ?\\b" + name时,由于空格是可选的,所以可以在字符串的开头使用name

票数 1
EN

Stack Overflow用户

发布于 2013-11-12 21:57:45

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

代码语言:javascript
复制
"(^ )?\\b" + name + "\\b"
票数 1
EN

Stack Overflow用户

发布于 2013-11-12 21:57:58

我想你需要这样的东西:

代码语言:javascript
复制
new RegExp("^ ?\\b" + name + "\\b");

或者像这样:

代码语言:javascript
复制
new RegExp("^ *\\b" + name + "\\b");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19940679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档