2011-03-08 56 views
0

我得到了一些HTML以下列方式格式化:用原型替換正則表達式?

[Title|<a class="external" href="http://test.com">http://test.com</a>] 

從這些文字,我想創建一個使用「標題」作爲文本和「http://test.com」爲紐帶的鏈接。我怎樣才能在原型中最好地做到這一點?

+0

你怎麼想你的最終輸出是? – DhruvPathak 2011-03-08 06:21:19

+0

嗨DhruvPathak,輸出應該是:Title FLX 2011-03-08 16:58:09

回答

1

這裏是一個正則表達式,而這樣做的,將保留錨標記的原始屬性替換:

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> 
+0

嗨,亞當,我如何使它遍歷整個div?我一直試圖讓這個工作,但我仍然失敗:http://jsfiddle.net/JFC72/2/ – FLX 2011-03-08 16:22:26

+0

我已經更新了jsfiddle來替換每個使用'/ g'在正則表達式的結尾模式。 http://jsfiddle.net/JFC72/9/ – 2011-03-08 20:14:06

+0

嘿亞當,不幸的是,它只追加到#formatted而不是按要求替換它們,我該如何解決這個問題?非常感謝! – FLX 2011-03-09 01:36:20

1

沒有原型: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>"; 

} 
+0

謝謝!儘管如此,我仍然遇到了困難,請參閱:http://jsfiddle.net/JFC72/1/ – FLX 2011-03-08 06:05:40

2

純正則表達式:

var ProperLink=WierdString.replace(/\[([^|]+)\|(<[^>]+>)[^<]+[^\]]+\]/,'$2$1</a>') 
在上下文

您提供:

function convert(id){ 
    $(id).innerHTML=$(id).innerHTML.replace(/\[([^|]+)\|(<[^>]+>)[^<]+[^\]]+\]/g,'$2$1</a>'); 
} 
convert('testdiv'); 
+0

好的單線程。 – DhruvPathak 2011-03-08 05:48:53

+0

好Sha!你知道我可以如何在一個例子中實現它:http://jsfiddle.net/JFC72/1/?謝謝你:) – FLX 2011-03-08 06:09:32

+0

答案更新,以反映你的具體例子=) – Shad 2011-03-08 21:23:59

0
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 
+0

嗯..我認爲[1]部分是'BLAH',FLX想要一個鏈接的版本,你的'parts [0]' – Shad 2011-03-08 05:56:38

+0

@Shad - 'parts [1]'應該是沒有任何HTML的URL。我想@FLX可以使用文本和URL來創建錨節點。請參閱http://jsfiddle.net/anurag/9LhA3/ – Anurag 2011-03-08 07:23:30