1

我有一个 contenteditable div,当用户按下空格或粘贴到其中时,会搜索其内容以查找替换为的 url(通过正则表达式):

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

它有效。

问题是,当您继续编写或粘贴时,该<a>标签中的三个 url 将再次被评估并被替换,从而造成严重破坏,因此我需要一种方法来避免它们被评估,或者通过更改正则表达式(它应该忽略 url前面有href=",title="url: ') 或更改 js.

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

4

2 回答 2

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>';
        }
    }
于 2013-02-18T18:04:33.717 回答
1

您可以重新处理所有内容,将您<a></a>的文本转换回来,因此您重做所有过程。

于 2013-02-18T18:11:55.060 回答