暫時編碼<a href ...>...</a>
成別的東西,刪除所有其他標籤則恢復<a>
標籤:
// Example in javascript:
string.
replace(/<a(.*?)>/g,'\0$1\0').
replace(/<\/a>/,'\1').
replace(/<[^>]*>/,'').
replace(/\0(.*?)\0/,'<a$1>').
replace(/\1/,'</a>');
在上面的代碼我使用NUL和SOH字符(ASCII爲0x00和0x01),以替代<a>
標籤只是因爲它們不太可能出現在字符串中。隨意用任何其他不會出現在你的字符串中的字符或字符序列替換它們。
從其他評論看來,你正在瀏覽器中運行。在這種情況下,瀏覽器已經將HTML解析爲一個很好的DOM樹。使用DOM方法在樹解析和處理它,你想要的方式:
function simpleHTML (domNode) {
var ret = "";
if (domNode.nodeType === Node.ELEMENT_NODE) {
var children = domNode.childNodes;
for (var i=0;i<children.length;i++) {
var child = children[i];
// Filter out unwanted nodes to speed up processing.
// For example, you can ignore 'SCRIPT' nodes etc.
if (child.nodeName != 'SCRIPT') {
if (child.nodeName == 'A') {
ret += '<a href="' + child.href + '">' +
simpleHTML(child) +
'</a>';
}
else {
ret += simpleHTML(child);
}
}
}
}
else if (domNode.nodeType === Node.TEXT_NODE) {
ret += domNode.nodeValue;
}
return ret;
}
// serialize the whole document:
var simpleDocument = simpleHTML(document.body);
// serialize a div:
var simpleDiv = simpleHTML(document.getElementById('some_div'));
// filter a html formatted string:
var temp = document.createElement('DIV');
temp.innerHTML = original_string;
simple_string = simpleHTML(temp);
使用HTML解析器!正則表達式無法正確解析HTML。 – 2010-01-02 11:33:18
您錯過了這篇文章:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2010-01-02 11:34:39
您使用什麼編程語言?如果你告訴我們,答案可能與你更相關。 – 2010-01-02 11:34:54