我通过以下方式获得了一些html格式:
[Title|<a class="external" href="http://test.com">http://test.com</a>]
从这些文本中我想创建使用“标题”作为文本和“http://test.com”作为链接的链接。我怎样才能在原型中做到最好?
答案 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