默认情况下,.
通配符运算符不匹配换行符 ( \n
, \r
)。在其他语言中,有一种DOTALL
模式(有时称为单行模式)可以.
匹配任何内容。Javascript由于某种原因没有它。如果您想要等效的 use [\s\S]
,这意味着任何字符都是空格或不是空格,所以:
/<img alt="([\s\S]+?)" src="http:\/\/(.+?)\.(jpg|gif)">/
请参阅Javascript 正则表达式多行标志不起作用。
我也逃脱了.
之前,jpg|gif
否则它会匹配任何字符,而不是.
你想要的。
话虽如此,使用正则表达式解析 HTML 是一个非常糟糕的主意。更重要的是,除非您的问题缺少相关细节,否则您可以使用jQuery 属性选择器轻松完成此操作:
$("img[src='http://.*\.gif|jpg']").each(function() {
var alt = $(this).attr("alt");
var src = $(this).attr("src");
...
});
或者,如果您希望有一个alt
属性:
$("img[alt][src='http://.*\.gif|jpg']").each(function() {
var alt = $(this).attr("alt");
var src = $(this).attr("src");
...
});