2012-02-22 19 views
1

我想在字符串中找到一個img標籤。 我寫例如:在regExp中找到第一個「/>」序列,javascript

var str ='<img border="1" height="165" id="img2" src="http://google.jpg" />'; 
var regXstr = "<img (.)*/>"; 
var regX = new RegExp(regXstr , 'gi'); 
document.write(str.match(regX)); 

和輸出是str整個文本是在這種情況下很好的,但是如果我切換str有以下幾點:

var str ='<img border="1" height="165" id="img2" src="http://google.jpg" /> /> />'; 

var str ='<img border="1" height="165" id="img2" src="http://google.jpg" /><span/>'; 

的結果仍然是str整個文本,而我只想要img標籤 - 從<img直到升第一/>

+5

[爲什麼?](http://stackoverflow.com/a/1732454/15498) – 2012-02-22 19:51:56

+1

特別是*爲什麼*,當你在javascript中工作時 - 爲什麼你沒有訪問DOM,這將允許更好地集中訪問元素? – 2012-02-22 19:55:53

+0

[positive lookahead](http://www.regular-expressions.info/refadv.html)是解決方案 – diEcho 2012-02-22 19:56:07

回答

1

您可以嘗試使用使得正則表達式不是貪婪 '?':

var regXstr = "<img (.)*?/>"; 
+0

很好。謝謝!你能解釋一下''嗎?在這種情況下做什麼?我知道這是使用'?'標記單個字符 – remi 2012-02-22 20:00:22

+0

在'+'或'*'告訴匹配器搜索最小匹配之後,請參閱http://www.javascriptkit.com/javatutors/redev2.shtml – PinnyM 2012-02-22 20:03:40

+0

第一行工作正常。 – remi 2012-02-22 20:04:05