url的正则表达式未包含在标签中

时间:2013-02-18 17:37:23

标签: javascript jquery regex contenteditable

我有一个令人满意的div,当用户按空格或粘贴到其中时,会搜索其内容以获取替换为的网址(通过正则表达式):

<a href="' + url + '" title="' + url + '" target="_blank" class="label label-info label-url" contenteditable="false">url: \'' + url + '\'</a>&nbsp;

它有效。

问题在于,当你继续写作或粘贴时,<a>标签中的三个网址将再次被评估并取代,造成严重破坏,所以我需要一种方法来避免它们被评估,更改正则表达式(它应该忽略href="title="url: '之前的网址或更改js。

jsfiddle:http://jsfiddle.net/YUekd/

2 个答案:

答案 0 :(得分:1)

第一个问题是,JS正则表达式引擎中没有负面的背后隐藏。但您可以使用replace方法的回调函数来执行此操作:

html = html.replace(
    /(href="|title="|url: )?(yoururlregex)/ig, 
    function($0, $1, $2) {
        return $1 
             ? $0 
             : '<a href="' + $2 + '" title="' + $2 + '">url: ' + $2 + '</a>';
    }
);

我用常量字符串替换了你的URL正则表达式以使它更清晰,你可以用你的正则表达式代替大括号。

编辑:放置match的位置:

    function($0, $1, $2) {
        if ($1) {
            return $0;
        } else {
            match = true;
            return '<a href="' + $2 + '" title="' + $2 + '">url: ' + $2 + '</a>';
        }
    }

答案 1 :(得分:1)

您可以重新处理所有内容,然后在文本上转换<a></a>,以便重做所有过程。