2010-02-02 34 views
0

我有具有JavaScript變量值JavaScript的正則表達式多次出現

var ull="<ul><li>sunil here from mandya </li><li>kumar here</li></ul>" 

我想從mandya 第二警報消息=庫馬爾這裏

每個列表內容如下面 第一警報消息=蘇尼這裏的警告消息的輸出

如何用正則表達式完成此任務,請幫助我,我是新手

回答

0

更好的選擇是使用JQuery(或者只是DOM調用),而不是嘗試使用正則表達式解析HTML。此外,您應該考慮不向用戶發送一系列alert()模式對話框,這對很多用戶來說都是非常煩人的。

0
var str = '<ul><li>sunil here from mandya </li><li>kumar here</li></ul>'; 
var haystack = str; 

var match = haystack.match(/<li>(.+?)<\/li>/); 
while (match) { 
    alert(match[1]); 
    haystack = haystack.slice(match[0].length); 
    match = haystack.match(/<li>(.+?)<\/li>/); 
} 

當然,如果HTML實際上在頁面上,那麼遍歷DOM會好得多。

2

不建議在HTML上使用正則表達式。 XML解析器會更好。甚至比使用JavaScript更好。這將輸出你在找什麼

var li = document.getElementsByTagName('li'); 
var liLength = li.length; 
for(i=0;i<liLength;i++){ 
    if(document.all){ //IE 
     alert(li[i].innerText); 
    }else{ //Firefox 
     alert(li[i].textContent); 
    } 
} 

的替代,這將不是寫這些東西可以更好地支持自己是使用一個JavaScript框架,如jQuery(如richardtallent建議)。

你最好能夠做的東西在一個更詳細的方式,如:

$('li').each(function(){ 
    alert($(this).text()); 
}); 
1

Don't use regex to parse html,使用解析器而不是

var p = new DOMParser(); 
var ul = p.parseFromString("<ul><li>sunil here from mandya </li>" + 
      "<li>kumar here</li></ul>", "text/xml"); 
var lis = ul.getElementsByTagName("li"); 
var len = lis.length; 
for(var i = 0; i < len; i++) 
    alert(lis[i].firstChild.nodeValue); 
相關問題