正则表达式替换原型?

时间:2011-03-08 05:27:26

标签: javascript regex prototype

我通过以下方式获得了一些html格式:

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

从这些文本中我想创建使用“标题”作为文本和“http://test.com”作为链接的链接。我怎样才能在原型中做到最好?

4 个答案:

答案 0 :(得分:2)

Pure RegExp:

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

在您提供的上下文中:

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

答案 1 :(得分: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>";

}

答案 2 :(得分: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>

答案 3 :(得分: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