我得到了一些HTML以下列方式格式化:用原型替換正則表達式?
[Title|<a class="external" href="http://test.com">http://test.com</a>]
從這些文字,我想創建一個使用「標題」作爲文本和「http://test.com」爲紐帶的鏈接。我怎樣才能在原型中最好地做到這一點?
我得到了一些HTML以下列方式格式化:用原型替換正則表達式?
[Title|<a class="external" href="http://test.com">http://test.com</a>]
從這些文字,我想創建一個使用「標題」作爲文本和「http://test.com」爲紐帶的鏈接。我怎樣才能在原型中最好地做到這一點?
這裏是一個正則表達式,而這樣做的,將保留錨標記的原始屬性替換:
var link = "[Title|<a class=\"external\" href=\"http://test.com\">http://test.com</a>]";
var pattern = /\[([^|]+)\|([^>]+.?)[^<]*(<\/a>)\]/;
link.replace(pattern, "$2$1$3"));
輸出是:
<a class="external" href="http://test.com">Title</a>
沒有原型:http://jsfiddle.net/JFC72/,你可以使用原型使其更簡單。
var myStr = "[THIS IS TITLE|http://test.com]";
document.getElementById('testdiv').innerHTML = getLink(myStr);
function getLink(myStr)
{
var splitted = myStr.split("|http");
var title = splitted[0].substring(1);
var href = splitted[1].substring(0,splitted[1].length-1);
return "<a href='http" + href + "'>" + title + "</a>";
}
謝謝!儘管如此,我仍然遇到了困難,請參閱:http://jsfiddle.net/JFC72/1/ – FLX 2011-03-08 06:05:40
純正則表達式:
var ProperLink=WierdString.replace(/\[([^|]+)\|(<[^>]+>)[^<]+[^\]]+\]/,'$2$1</a>')
在上下文
您提供:
function convert(id){
$(id).innerHTML=$(id).innerHTML.replace(/\[([^|]+)\|(<[^>]+>)[^<]+[^\]]+\]/g,'$2$1</a>');
}
convert('testdiv');
好的單線程。 – DhruvPathak 2011-03-08 05:48:53
好Sha!你知道我可以如何在一個例子中實現它:http://jsfiddle.net/JFC72/1/?謝謝你:) – FLX 2011-03-08 06:09:32
答案更新,以反映你的具體例子=) – Shad 2011-03-08 21:23:59
var dummyDiv = document.createElement('div');
dummyDiv.innerHTML = '[Title|<a class="external ...';
var parts = dummyDiv.innerText.slice(1, -1).split('|');
// parts[0] is the text, parts[1] is the URL
你怎麼想你的最終輸出是? – DhruvPathak 2011-03-08 06:21:19
嗨DhruvPathak,輸出應該是:Title – FLX 2011-03-08 16:58:09