Показать сообщение отдельно
  #1 (permalink)  
Старый 05.06.2012, 16:03
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

Регулиряки негативный просмотр и прочее
Есть такой код:

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 Ссылка]

Чтобы не было конфликтов

Последний раз редактировалось Антон Крамолов, 05.06.2012 в 16:23.
Ответить с цитированием