регулярное выражение заменить на прототип? - PullRequest
0 голосов
/ 08 марта 2011

Я получил html, отформатированный следующим образом:

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

Из этих текстов я хотел бы создать ссылки, используя «Заголовок» в качестве текста и «http://test.com" в качестве ссылки. Как лучше всего это сделать в прототипе?

Ответы [ 4 ]

2 голосов
/ 08 марта 2011

Pure RegExp:

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

в указанном вами контексте:

function convert(id){
    $(id).innerHTML=$(id).innerHTML.replace(/\[([^|]+)\|(<[^>]+>)[^<]+[^\]]+\]/g,'$2$1</a>');
}
convert('testdiv');
1 голос
/ 08 марта 2011

Вот регулярное выражение, которое при замене сохранит исходные атрибуты тега привязки:

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>
1 голос
/ 08 марта 2011

Без прототипа: 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 голосов
/ 08 марта 2011
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
...