我使用以下正则表达式搜索Feed中标记中的图像:
var str=items.item(i).getElementsByTagName("content:encoded").item(0).text;
var patt1=/([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/i
var urlMatch = str.match(patt1);
然后我在以下标记内打印到控制台urlMatch [0],urlMatch [1]和urlMatch [2]:
<![CDATA[
<p><a href="http://www.highlandradio.com/wp-content/uploads/2013/08/Emergency.jpg"><img class="alignleft size-thumbnail wp-image-56646" alt="Emergency" src="http://www.highlandradio.com/wp-content/uploads/2013/08/Emergency-150x150.jpg" width="150" height="150" /></a></p> <p><strong>The HSE has confi
]]>
这将分别返回以下3个结果:
http://www.highlandradio.com/wp-content/uploads/2013/08/Emergency.jpg,
http://www.highlandradio.com/wp-content/uploads/2013/08/Emergency.jpg,
jpg.
有人可以向我解释发生了什么事吗?为什么我没有得到名称中150x150的那个?这是我需要的。感谢您的帮助
答案 0 :(得分:2)
您为第一场比赛获得了多个小组,而不是多个小组。这意味着,urlMatch[0]
是匹配,urlMatch[1]
是第一个捕获组(第一组括号,偶然与整个匹配相同),urlMatch[2]
是第二组括号中的g
你的模式(你已经包裹在文件扩展名中)。
您需要使用全局var patt1=/([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/ig;
var urlMatch = str.match(patt1);
标志:
[
"http://www.highlandradio.com/wp-content/uploads/2013/08/Emergency.jpg",
"http://www.highlandradio.com/wp-content/uploads/2013/08/Emergency-150x150.jpg"
]
导致:
var patt1 = /[a-z\-_0-9´\/:.]*\.(?:jpg|jpeg|png|gif)/ig;
如果做需要捕获组(除了所有匹配项),您还必须使用RegExp.exec()
。
如果没有,您可以使用非捕获组来提高性能。请注意,在任何情况下都不需要外括号,因此无论如何都可以省略。使用非捕获组,这看起来像:
{{1}}