所以我知道\ bBlah \ b将匹配整个Blah,但它也会匹配Blah in“Blah.jpg”我不想要它。我想只匹配整个单词和两边的空格。
答案 0 :(得分:49)
您可以尝试:\sBlah\s
。
或者如果您允许开始和结束锚点(^|\s)Blah(\s|$)
这将自己匹配"Blah"
,或Blah
"Blah and Blah"
匹配
\s
代表“空白字符”。^
匹配字符串$
匹配字符串如果要匹配Blah
中的"Blah Blah"
,那么由于两个匹配项之间的“共享”,您必须使用断言。类似的东西:
(^|\s)Blah(?=\s|$)
Blah
上面的正则表达式也会匹配前导空格。
如果你只想Blah
,理想情况下,lookbehind会很好看:
(?<=^|\s)Blah(?=\s|$)
但是由于Javascript不支持它,你可以写:
(?:^|\s)(Blah)(?=\s|$)
现在Blah
将在\1
中捕获,没有前导空格。
答案 1 :(得分:17)
答案 2 :(得分:3)
尝试\sBlah\s
- 它将匹配任何一方的任何形式的空白。
答案 3 :(得分:2)
(^|\s)Blah(\s|$)
应该可以工作,但是如果你只想要这个单词,它也可以选择空格:
(^|\s)(Blah)(\s|$)
并参加第2组(红宝石2美元)。
如果需要RegEx的帮助,请结帐:http://www.gskinner.com/RegExr/
答案 4 :(得分:2)
提取字符串中的所有单词
words_array = str.match(/\b(\w|')+\b/gim) //only single qout allowed