2011-12-25 6 views
4

Я пытаюсь разобрать HTML-код для ссылок, идея заключается в замене ссылок на изображения с помощью <img> и других ссылок с <a>.javascript html text filter/linkify

В основном я ищу что-то вроде этого:

https://github.com/dejan/jquery-auto_html/blob/master/jquery.auto_html.js

Но работает на HTML, а также текст. Смысл: он должен заменить http://google.com, но не <a href="http://google.com">google</a>

Могу ли я сделать это без возможности поиска в регулярном выражении? Благодарю.

Мы должны перейти от

html = "Here is a great site: http://google.com!" 
convert(html) 
> "Here is a great site: <a href=\"http://google.com\">google</a>!" 

html = "Here is a great site: <a href=\"http://google.com\">google</a>!" 
convert(html) 
> "Here is a great site: <a href=\"http://google.com\">google</a>!" 
+0

является лучшим касательно предшествующего текста выстрел. 'href =" 'часть подтверждается, что есть. Поэтому поиск текста с использованием этого patter - лучший способ. –

+0

@Shiplu yes Я знаю, просто lookbehind не поддерживается в javascript – Harry

+0

Можете ли вы отредактировать свой вопрос, чтобы включить явно то, что html вам хотите преобразовать? Я запутался в том, что вы конвертируете элементы 'a' в элементы' img' или преобразуете текст в элементы 'img' или' a'. – mrtsherman

ответ

2

Следующие регулярные выражения замены заменит ссылки на <a> и графические ссылки на <img> элементов. Это исключает ссылки, которые уже внутри href=" или src=" и т.д ..

function replaceStuff(html) { 
    return html 
     .replace(/[^\"]http(.*)\.(png|jpg|jpeg|gif)/g, ' <img src="http$1.$2">' 
     .replace(/[^\"]http(.*)\.([a-zA-Z]*)/g, ' <a href="http$1.$2">http$1.$2</a>') 
     ); 
} 

Вы можете назвать это нравится:

// will replace the link to <a> 
replaceStuff('Hello http://google.com'); 

// will not replace anything 
replaceStuff('Hello <a href="http://google.com">ff</a>'); 

// will replace image link to <img> 
replaceStuff('Hello http://google.com/image.png'); 

// will not replace anything 
replaceStuff('Hello <img src="http://google.com/image.png">'); 
+0

И он исключает ссылки в кавычках. 'Мой любимый сайт -" http://axels-fahrradladen.de "' ничего не изменит. – Matmarbon

+0

Да, я написал его так, чтобы он исключал ссылки в кавычках. Регулярное выражение можно расширить, чтобы отфильтровать только 'href = ..' и 'src =" .. 'вместо всего в кавычках. – techfoobar

+0

Я делаю что-то не так? http://jsbin.com/inases/edit#preview – Harry