Javascript url的正则表达式未包含在标记中
我有一个contenteditable div,当用户按空格或粘贴到其中时,它的内容会被搜索到一个url(通过正则表达式),该url会被替换为:Javascript url的正则表达式未包含在标记中,javascript,jquery,regex,contenteditable,Javascript,Jquery,Regex,Contenteditable,我有一个contenteditable div,当用户按空格或粘贴到其中时,它的内容会被搜索到一个url(通过正则表达式),该url会被替换为: 它是有效的 问题是,当您继续编写或粘贴时,中的三个URL第一个问题是,JS正则表达式引擎中没有负面查找。但您可以使用带有replace方法的回调函数来执行此操作: html = html.replace( /(href="|title="|url: )?(yoururlregex)/ig, function($0, $1, $2)
它是有效的
问题是,当您继续编写或粘贴时,
中的三个URL第一个问题是,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>';
}
);
您可以重新处理所有内容,您可以将您的
转换回文本,这样您就可以重做所有过程。您尝试过任何方法吗?很好,我成功了,您将我的原始匹配设置为true;行tho?我想您可以省去match
检查,但为了减少HTML插入,我添加了一个带有match
变量集的回调函数版本。只是为了了解发生了什么:$2是url,$1是第一个括号匹配(href、title或url),而$0是两者的组合,对吗?我还必须将title=“改为title=”?在您的正则表达式中,ie8不喜欢将该属性值放在引号之间,原因很奇怪:SYes,$0是完全匹配,$1是第一个括号,$2是第二个括号。您可以尝试使用此$that.html($that.html().replace(new RegExp(“”,$1))
作为函数的第一行highlightUrl
。因此,这将规范化您的html。
function($0, $1, $2) {
if ($1) {
return $0;
} else {
match = true;
return '<a href="' + $2 + '" title="' + $2 + '">url: ' + $2 + '</a>';
}
}