1

私はcontenteditabledivを持っています。ユーザーがスペースを押すか貼り付けると、そのコンテンツは次のように置き換えられるURLを(正規表現を介して)検索されます。

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

そしてそれは動作します。

問題は、書き込みまたは貼り付けを続けると、その<a>タグ内の3つのURLが再度評価されて置き換えられ、大混乱を引き起こすことです。そのため、正規表現を変更することによって、それらが評価されないようにする方法が必要です(URLを無視する必要があります)。前に、、または)またはjsを変更しますhref="title="url: '

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

4

2 に答える 2

1

すべてを再処理<a></a>し、テキストを元に戻すことができるため、すべてのプロセスをやり直すことができます。

于 2013-02-18T18:11:55.060 に答える
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 に答える