【发布时间】:2018-09-06 22:27:11
【问题描述】:
我需要一个 javascript 中的正则表达式来匹配以特殊字符开头或结尾的整个单词?
这应该很容易,但由于某种原因,\b 在? 之后的行为不像我预期的那样:
> /FOO\?/.exec('FOO? ')
[ 'FOO?', index: 0, input: 'FOO? ', groups: undefined ]
> /FOO\?\b/.exec('FOO? ')
null
我需要什么,例如,如果我的词是“FOO”? (包括问号),我要匹配:
“FOO?很酷”,“你觉得FOO吗??”
但不是:“FOO 很酷”、“FOO?很酷”、“aaFOO?很酷”
它也应该适用于以“?”开头的单词。例如,如果我的单词 if "?FOO",我想匹配:
“?FOO 很酷”、“我爱?FOO”
但不是:“FOO 很酷”、“FOO?很酷”、“aaFOO?很酷”
我希望这是有道理的。
【问题讨论】:
-
使用
/FOO\?(?!\w)/ -
@WiktorStribiżew 你的建议的问题是它与
aaFOO?不匹配 -
所以,在前面加上一个单词边界,使用
/\bFOO\?(?!\w)/或者/(?:^|\W)FOO\?(?!\w)/ -
@WiktorStribiżew 它有效。但如果我的词以
?开头,则它不起作用,例如?FOO
标签: javascript regex