负前瞻以匹配RegExp中的自身
我想使用RegExp来匹配一个图像url,它将有两种情况:
第一种情况是一个普通的图片URL,以.png
结尾,可能包含一些查询字符串,此时RegExp将完全匹配它。https://test.com/cat.png?pkey=abcd
在第二种情况下,URL被 Package 在**[img][/img]
标签中,RegExp将被预期为not**为任何字符串。[img]https://test.com/cat.png?pkey=abcd[/img]
现在我已经写了这个正则表达式,它在第一种情况下工作得很好(https:\/\/.*?\.png(?:\?[\w&=_-]*)?)(?!\[)
然而,它不适用于第二种情况,它仍然将匹配到URL的倒数第二个字符。如何修改RegExp以实现我的目标?
以下是RegExp链接:https://regexr.com/7eohf
1条答案
按热度按时间2w3kk1z51#
尝试在
.png
之后立即调用lookahead:其中
\S
匹配任何不是空格的字符(您可以根据需要替换它)。查看here的演示。
或者,您可以强制匹配的最后一个字符后面不跟
[?\w&=_-]
: