2012-01-19 2 views
0

У меня есть это регулярное выражение/код JavaScript:

toReturn = toReturn.replace(/(\[url=)(.+)(\])(.+)(\[\/url\])/g, '<a target=\"_blank\" href="\$2">\$4</a>'); 

Но проблема в том, если пользователь вводит:

[url=example]example[/url] 
some_other_text 
[url=example2]example2[/url] 

Это будет связать первый [url =] с последним [/ url] Создание только одного неправильного URL !!!!!

Как это исправить?

+0

И если пользователь вводит '[url = javascript: location = http: //evil.org] [/ url]' или '[url =">

+0

And how would I stop that Mike Samuel? –

+0

by white-listing URLs by protocol, and properly encoding both the HTML attribute value and the HTML text node using entity escapes. –

ответ

2

Используйте (.+?) вместо (.+), чтобы сделать квантификатор ленивым.

+0

Работает отлично, спасибо! –

Смежные вопросы