我有一个令人满意的div,当用户按空格或粘贴到其中时,会搜索其内容以获取替换为的网址(通过正则表达式):
<a href="' + url + '" title="' + url + '" target="_blank" class="label label-info label-url" contenteditable="false">url: \'' + url + '\'</a>
它有效。
问题在于,当你继续写作或粘贴时,<a>
标签中的三个网址将再次被评估并取代,造成严重破坏,所以我需要一种方法来避免它们被评估,更改正则表达式(它应该忽略href="
,title="
或url: '
之前的网址或更改js。
jsfiddle:http://jsfiddle.net/YUekd/
答案 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>
,以便重做所有过程。