2010-11-02 4 views
1

Я хочу найти каждый url в тексте и обернуть их тегом (<a href="...">...</a>).Проблема RegExp в javascript

var src = "bla blaaa blaaaaaa 1 http://yahoo.com text something about and. http://www.google.com"; 
var match = /http:\/\/([a-z0-9.-]+)/.exec(src); //this only can one matched 
// result: ["http://yahoo.com", "yahoo.com"] 

Но мне нужно обернуть все ссылки.

ответ

2

Вы можете использовать /g (глобальные), чтобы соответствовать всем вхождений и обратной ссылки, как это:

var src = "bla blaaa blaaaaaa 1 http://yahoo.com text something about and. http://www.google.com"; 
var match = src.replace(/http:\/\/([a-z0-9.-]+)/g, '<a href="$1">$1</a>'); 

You can test it out here.

+0

Прежде всего, ссылка замечательная, о которой я раньше не знал. Во-вторых, спасибо за объяснение '/ g'. – uzay95

1
var res = src.replace(/(http:\/\/([a-z0-9.-]+))/g, '<a href="$1">$2</a>'); 

Выходы:

bla blaaa blaaaaaa 1 <a href="http://yahoo.com">yahoo.com</a> text something about and. <a href="http://www.google.com">www.google.com</a>

Не уверен, что это намерение, но то, что я мог думать. Используйте <a href="$1">$1</a> в качестве замены, если вы хотите сохранить префикс http:// в тексте ссылки.

(. В то же время Ник Craver дал ответ и ввел модификатор g)

+0

'\ 0' не является обратной рецензией, вы можете протестировать его здесь: http://www.jsfiddle.net/nick_craver/9beM2/ –

+0

@Nick Craver Нет, вот что я узнал тоже: -S Edited , Спасибо, что заметили. – jensgram

+0

Если я использую '$2', я думаю, что он будет использовать первую ссылку на второй адрес, например 'google.com', и все эти ссылки не открывают реальную страницу из-за того, что у них нет' http: // 'они?!? – uzay95