正则表达式\ b匹配具有特殊字符的字符串

时间:2019-02-25 01:52:01

标签: javascript regex

\ b表达式存在与特殊字符的单词不匹配的问题。

我有这个正则表达式

\bstr=flavor\b

我正在阅读有关转义特殊字符的信息,但不确定将其放置在何处。

我的目标是使正则表达式不匹配以下字符串

str=flavor%20sweet --> Shouldn't match (1) 
str=flavorsweet --> shouldn't match (2)
declare str=flavor --> should match (3)

2和3已经可以使用当前的正则表达式,但是1存在问题,因为它仍然与应该考虑%的地方相匹配

我应该如何更改我的正则表达式以使其将%视为字符?

1 个答案:

答案 0 :(得分:0)

如果您的正则表达式引擎接受负前瞻,则可以使用:

\bstr=flavor\b(?!%)

强制紧靠str=flavor后面的字符不是%字符。

演示: https://regex101.com/r/kSmLzW/1

例如,您还可以在[ \t]*字符周围添加=以接受str = flavor

这给出了正则表达式:(\bstr[ \t]*=[ \t]*flavor\b(?!%)

对于JS的旧版本,您可以使用:

\b(str=flavor)\b(?:[^%]|$)

演示:https://regex101.com/r/kSmLzW/2,如有必要,您可以在此处通过反向引用进行匹配。另外,如果您不想在%顶部加上其他字符,则可以将它们添加到字符范围异常定义[^]