0

次のコードを使用して、XML ドキュメントからこの画像 URL[1] を取得する JavaScript があります。ただし、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&#039;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), &quot;HAQE2sh3f&quot;, event, bagof({}));">http://pyucatan.conanp.gob.mx/chincho.htm</a><br/><br/>
<a href="http://www.facebook.com/photo.php?fbid=483838581645230&amp;set=a.167790786583346.41662.123942950968130&amp;type=1&amp;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>
4

2 に答える 2

2

正規表現は正しくありませんか?

はい。スペースなしでbrタグを一致させようとします。また、指定した文字列には、リンクの後/<br\/>(<a.*><img.*<\/a>)<br\/>/にはありません。<br>したがって、一致は返さnullれ、プロパティ" 1"はありません。

とにかく、正規表現はこのタスクには適していません。ノードを取得し、textContentjQueryを使用してHTMLとして解析するか( jQueryは変数に格納されたHTMLを解析できますか?を参照)、またはX [HT] MLを使用して解析し、セレクターを使用して要素を順番に取得します。属性を読み取ります。<description>jQuery.parseXMLa > imgsrc

于 2012-07-20T09:46:42.727 に答える
1

正規表現は、HTML/XMLを解析するための大きな禁止事項です。

で解析してみてくださいjQuery.parseXML()

于 2012-07-20T09:53:39.323 に答える