1
s='<img src="http://25.media.tumblr.com/xxxxx/tumblr_xxx_1280.jpg">'
p=/(?=<img src=")http:\/\/\d*\.media\.tumblr\.com\/\w*\/?tumblr_\w*_\d{3,4}\.\w{3,3}(?=")/g
s.match(p) # return null

但是,以下工作:

p=/(<img src=")http:\/\/\d*\.media\.tumblr\.com\/\w*\/?tumblr_\w*_\d{3,4}\.\w{3,3}(?=")/g
4

2 回答 2

2

?= :积极的前瞻。在您的主要表达式之后匹配一个组,而不将其包含在结果中。

如果您尝试仅提取 URL ,则您正在寻找积极的后视,因为您尝试在主要表达式之前匹配某些内容。

p=/(?<=img src=....
     ^ positive look-behind

编辑:

JavaScript 不支持它们(如评论所示),因此您必须求助于诡计

但是,如果您尝试提取 URL,将其拆分为 2 个步骤可能会更容易,获取整个匹配项,然后删除<img src=...部分。

于 2013-03-26T15:30:14.690 回答
0

您的第一个正则表达式无法匹配,因为它使用与它后面的模式相矛盾的零宽度前瞻。

正则表达式无法匹配"<img src=",并且在字符串中的相同位置也匹配,例如"http://25"

于 2013-03-26T15:31:05.610 回答