【问题标题】:Javascript reg ex to match whole word only, bound only by whitespaceJavascript 正则表达式仅匹配整个单词,仅由空格绑定
【发布时间】:2010-06-01 17:31:06
【问题描述】:

所以我知道 \bBlah\b 将匹配整个 Blah,但它也会匹配“Blah.jpg”中的 Blah,我不希望它这样做。我只想匹配整个单词,两边都有空格。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    你可以试试:\sBlah\s

    或者如果您允许开始和结束锚点,(^|\s)Blah(\s|$)

    这将匹配 "Blah" 本身,或 "Blah and Blah" 中的每个 Blah

    另见


    前瞻变体

    如果您想同时匹配"Blah Blah" 中的Blah,那么由于两个匹配项之间“共享”一个空格,因此您必须使用断言。比如:

    (^|\s)Blah(?=\s|$)
    

    另见


    仅捕获Blah

    上面的正则表达式也会匹配前导空格。

    如果您只想要Blah,理想情况下,向后看会很好:

    (?<=^|\s)Blah(?=\s|$)
    

    但由于 Javascript 不支持,你可以改为:

    (?:^|\s)(Blah)(?=\s|$)
    

    现在Blah 将被捕获在\1 中,没有前导空格。

    另见

    【讨论】:

    • 这与第二个 Blah 不匹配:“Blah something Blah。”因为点。但是前面有一个空格
    • 非常有用。这帮助我去除了单个字符。谢谢一百万。
    • 效果很好。但我有另一种情况“是是***是否***否是”。在那种情况下有什么建议吗?谢谢。
    • (?:^|\s)(yes)(?=|$) 呜呼
    【解决方案2】:

    匹配所有:

    \bBlah\b
    

    Debuggex Demo

    【讨论】:

    • 这里不需要使用交替,因为\b 包括^$。前瞻在这里也是多余的,因为\b 匹配的不是字符,而是边界。所以,一个简单的\bBlah\b 做同样的事情。
    • 很好的解决方案,但答案可以使用解释。 \b 匹配单词边界:developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…
    【解决方案3】:

    试试\sBlah\s——这将匹配两边任何形式的空白。

    【讨论】:

    【解决方案4】:

    提取字符串中的所有单词

    words_array = str.match(/\b(\w|')+\b/gim)   //only single qout allowed
    

    【讨论】:

      【解决方案5】:

      (^|\s)Blah(\s|$) 应该可以工作,但是它也会选择空格,如果你只想要这个词,你可以这样做: (^|\s)(Blah)(\s|$) 参加第 2 组(红宝石 2 美元)。

      如果需要 RegEx 方面的帮助,请查看:http://www.gskinner.com/RegExr/

      【讨论】:

      • 这可能会错过一些匹配,例如最后一个Blah这里:rubular.com/r/xSCyF42ymy
      • 你是对的,参见上面的推荐,修复它,或者用 (?=\s|$) 结束它
      猜你喜欢
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多