Есть такой код:
var replacements = {
'<strong>$1</strong>': /\*\*(.+)\*\*/g,
'<em>$1</em>': /\*(.+)\*/g,
'<a href="$1">$2</a>': /\[([^\s"]+) (\w+)\]/g,
'<a href="$1">$1</a>': /(https?:\/\/(?:www\.)?\w+(\.\w+)*(?::\d+)?(?:\/[^\s]*)?)/g
}
window.addEventListener('load', function() {
var body = ge('body');
body.onkeypress = body.onkeyup = function() {
var v = val(this);
v = stripTags(v);
for (var x in replacements) {
v = v.replace(replacements[x], x);
}
v = v.replace(/\r\n|\r|\n/g, '<br>');
val('preview', v);
}
}, false);
Вводишь в текстовое поле *test*
он в диве отображает
test
Вопрос #1:
Почему
*
test
*
Не отображается наклонным? Ведь используется модификатор 'g'
#2 Негативный просмотр
// Если попытаться использовать вместо этого
'<a href="$1">$1</a>': /(https?:\/\/(?:www\.)?\w+(\.\w+)*(?::\d+)?(?:\/[^\s]*)?)/g
// Регулярку с негативным просмотром, то все отказывается работать
/(?<!\[)(https?:\/\/(?:www\.)?\w+(\.\w+)*(?::\d+)?(?:\/[^\s]*)?)/g
Как бы для ссылок
[
http://site.ru Ссылка]
Чтобы не было конфликтов