在RegExp中使用负前瞻来正确匹配 Package 在[img]标签中的图像URL?

yptwkmov  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(103)

负前瞻以匹配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

2w3kk1z5

2w3kk1z51#

尝试在.png之后立即调用lookahead:

(https:\/\/.*?\.png(?!\S*\[)(?:\?[\w&=_-]*)?)

其中\S匹配任何不是空格的字符(您可以根据需要替换它)。
查看here的演示。
或者,您可以强制匹配的最后一个字符后面不跟[?\w&=_-]

(https:\/\/.*?\.png(?:\?[\w&=_-]*)?)(?![?\w&=_-]|\[)

相关问题