Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript url的正则表达式未包含在标记中_Javascript_Jquery_Regex_Contenteditable - Fatal编程技术网

Javascript 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)

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

它是有效的


问题是,当您继续编写或粘贴时,
中的三个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>';
        }
    }