我有一些JavaScript应该使用以下代码从XML文档中获取此图像URL [1]。但Chrome的控制台会在此行返回Uncaught TypeError: Cannot read property '1' of null
。正则表达式是不正确的?
var image = $(post.description.match(/<br\/>(<a.*><img.*<\/a>)<br\/>/)[1]).addClass('photo');
[1] http://photos-c.ak.fbcdn.net/hphotos-ak-ash4/391316_483838581645230_1080523933_s.jpg
XML的结构如下:
<description>
<![CDATA[
Extendemos una cordial felicitación a Reserva de la Biosfera Banco Chinchorro que celebra su aniversario el día de hoy.
Un especial saludo a Maricarmen García, Directora de la Reserva y Líder 2010 del Programa de Liderazgo. ¡Estamos muy
orgullosos de su trabajo!<br /> <br /> We would like to co
]]>
<![CDATA[
ngratulate Banco Chinchorro Biosphere Reserve who is celebrating their anniversary today. A special greeting to Maricarmen
García, the Reserve's Director and 2010 MAR Leadership Fellow. We are so proud of your work!<br /> <br />
<a href="http://pyucatan.conanp.gob.mx/chincho.htm" target="_blank" rel="nofollow nofollow"
onmousedown="UntrustedLink.bootstrap($(this), "HAQE2sh3f", event, bagof({}));">http://pyucatan.conanp.gob.mx/chincho.htm</a><br/><br/>
<a href="http://www.facebook.com/photo.php?fbid=483838581645230&set=a.167790786583346.41662.123942950968130&type=1&relevant_count=1"
title="" target=""><img class="img" src="http://photos-c.ak.fbcdn.net/hphotos-ak-ash4/391316_483838581645230_1080523933_s.jpg" alt="" /></a>
]]>
</description>
答案 0 :(得分:2)
正则表达式是否不正确?
是。 /<br\/>(<a.*><img.*<\/a>)<br\/>/
尝试匹配没有空格的br标签,并且在您给我们的字符串中,链接后没有<br>
。因此,匹配返回null
并且没有属性“1
”。
无论如何,Regex is not suited执行此任务。只需获取<description>
节点的textContent
,使用jQuery将其解析为HTML(请参阅Can jQuery Parse HTML Stored in a Variable?),或者使用jQuery.parseXML
将其解析为X [HT] ML,并使用selector to get a > img
元素,以便阅读src
属性。
答案 1 :(得分:1)
正则表达式是big no-no的parsing HTML/XML。
您应该尝试使用jQuery.parseXML()