-3
我想這樣做在JavaScript中儘可能高效地執行以下操作:取出並提取文本在javascript
- 卸下之間串,一切
<ul></ul>
標籤。 - 對於剩下的內容,包含在
<li>
和</li>
之內的每個字符串都需要轉儲到一個數組中,而不會有任何換行符隱藏在最後。
我在想正則表達式是答案,但我從來沒有用過它們。猜猜我可以找出一個辦法,但最終它可能不是最有效的。
我想這樣做在JavaScript中儘可能高效地執行以下操作:取出並提取文本在javascript
<ul></ul>
標籤。<li>
和</li>
之內的每個字符串都需要轉儲到一個數組中,而不會有任何換行符隱藏在最後。我在想正則表達式是答案,但我從來沒有用過它們。猜猜我可以找出一個辦法,但最終它可能不是最有效的。
正如其他人所說的,你必須小心使用正則表達式解析HTML。如果HTML被控制並且沒有嵌套的ul
或li
標籤,並且沒有包含有效HTML標籤或<或> chars的嵌入字符串(例如,HTML以已知格式從已知源發出,它可以工作正常)。這裏是做什麼,我想你問了一個辦法:
function parseList(str) {
var output = [], matches;
var re = /<\s*li[^>]*>(.*?)<\/li>/gi;
// remove newlines
str = str.replace(/\n|\r/igm, "");
// get text between ul tags
matches = str.match(/<\s*ul[^>]*>(.*?)<\/ul\s*>/);
if (matches) {
str = matches[1];
// get text between each li tag
while (matches = re.exec(str)) {
output.push(matches[1]);
}
}
return(output);
}
更萬無一失用一個實際的HTML解析器能夠理解的格式的細微之處(如嵌套的標籤,標籤值在嵌入式字符串等...),但如果你沒有這些,可以使用這樣一個更簡單的解析器。
你可以看到它在這裏工作:http://jsfiddle.net/jfriend00/c9ZLT/
你有什麼迄今所做。 – defau1t
你可以肯定,正則表達式不是答案。在SO上搜索「正則表達式HTML」。 [然後閱讀這個問題/答案](http://stackoverflow.com/questions/7686936/javascript-remove-all-content-between-some-tags)。 –
雖然你*可以*使用RegEx,如果你的HTML格式良好的xml(或XHTML),你可能想試試XSL。這是爲了轉換類似XML的數據而設計的。 – funkymushroom