【发布时间】:2010-06-01 17:31:06
【问题描述】:
所以我知道 \bBlah\b 将匹配整个 Blah,但它也会匹配“Blah.jpg”中的 Blah,我不希望它这样做。我只想匹配整个单词,两边都有空格。
【问题讨论】:
标签: javascript regex
所以我知道 \bBlah\b 将匹配整个 Blah,但它也会匹配“Blah.jpg”中的 Blah,我不希望它这样做。我只想匹配整个单词,两边都有空格。
【问题讨论】:
标签: javascript regex
你可以试试:\sBlah\s。
或者如果您允许开始和结束锚点,(^|\s)Blah(\s|$)
这将匹配 "Blah" 本身,或 "Blah and Blah" 中的每个 Blah
\s 代表“空白字符”。^ 匹配字符串中第一个字符之前的位置$ 匹配字符串中最后一个字符之后如果您想同时匹配"Blah Blah" 中的Blah,那么由于两个匹配项之间“共享”一个空格,因此您必须使用断言。比如:
(^|\s)Blah(?=\s|$)
Blah
上面的正则表达式也会匹配前导空格。
如果您只想要Blah,理想情况下,向后看会很好:
(?<=^|\s)Blah(?=\s|$)
但由于 Javascript 不支持,你可以改为:
(?:^|\s)(Blah)(?=\s|$)
现在Blah 将被捕获在\1 中,没有前导空格。
【讨论】:
【讨论】:
\b 包括^ 和$。前瞻在这里也是多余的,因为\b 匹配的不是字符,而是边界。所以,一个简单的\bBlah\b 做同样的事情。
\b 匹配单词边界:developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…
试试\sBlah\s——这将匹配两边任何形式的空白。
【讨论】:
提取字符串中的所有单词
words_array = str.match(/\b(\w|')+\b/gim) //only single qout allowed
【讨论】:
(^|\s)Blah(\s|$) 应该可以工作,但是它也会选择空格,如果你只想要这个词,你可以这样做:
(^|\s)(Blah)(\s|$) 参加第 2 组(红宝石 2 美元)。
如果需要 RegEx 方面的帮助,请查看:http://www.gskinner.com/RegExr/
【讨论】:
Blah这里:rubular.com/r/xSCyF42ymy