Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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_Regex - Fatal编程技术网

Javascript 例如,如何用链接替换普通URL?

Javascript 例如,如何用链接替换普通URL?,javascript,regex,Javascript,Regex,我差一点把它弄好了。我想知道是否有更好的方法 函数replaceurlwithhtmlinks(文本){ text=text.replace(/a/g,“--ucsps-->”); text=text.replace(/b/g,“--uspds-->”); var arrRegex=[ /(\([^)]*\b)((?:https?| ftp |文件):\/\/[-A-Za-z0-9+&@#\/%?=~+~(u())!:,.;]*[-A-Za-z0-9+&~(35;)/%=~(u())/ig,

我差一点把它弄好了。我想知道是否有更好的方法

函数replaceurlwithhtmlinks(文本){
text=text.replace(/a/g,“--ucsps-->”);
text=text.replace(/b/g,“--uspds-->”);
var arrRegex=[
/(\([^)]*\b)((?:https?| ftp |文件):\/\/[-A-Za-z0-9+&@#\/%?=~+~(u())!:,.;]*[-A-Za-z0-9+&~(35;)/%=~(u())/ig,
/(\([^)]*\b)((?:https?| ftp |文件):\/\/[-A-Za-z0-9+&@#\/%?=~+~(u())!:,.;]*[-A-Za-z0-9+&~(35; \/%=~(u())(.?\ b)/ig,
/()(\b(?:https?| ftp | file):\/\/[-a-z0-9+&@#\/%?=~(u())!:,.;]*[-a-z0-9+&~(u())\/%=~(u())(.?\ b)/ig];
对于(i=0;i

有什么想法吗?

我猜这个问题已经有答案了

函数replaceurlwithhtmlinks(文本){
var exp=/(\b(https?| ftp |文件):\/\/[-A-Z0-9+&@#\/%?=~~|!:,.;]*[-A-Z0-9+&@#\/%=~|]/ig;
返回文本。替换(exp,“”);
}

我猜这个问题已经有答案了

函数replaceurlwithhtmlinks(文本){
var exp=/(\b(https?| ftp |文件):\/\/[-A-Z0-9+&@#\/%?=~~|!:,.;]*[-A-Z0-9+&@#\/%=~|]/ig;
返回文本。替换(exp,“”);
}

我猜这个问题已经有答案了

函数replaceurlwithhtmlinks(文本){
var exp=/(\b(https?| ftp |文件):\/\/[-A-Z0-9+&@#\/%?=~~|!:,.;]*[-A-Z0-9+&@#\/%=~|]/ig;
返回文本。替换(exp,“”);
}

我猜这个问题已经有答案了

函数replaceurlwithhtmlinks(文本){
var exp=/(\b(https?| ftp |文件):\/\/[-A-Z0-9+&@#\/%?=~~|!:,.;]*[-A-Z0-9+&@#\/%=~|]/ig;
返回文本。替换(exp,“”);
}
在这个问题上,答案相当明确

函数replaceurlwithhtmlinks(文本){
变量re=/(\(.*)?\b((?:https?| ftp | file):\/\/[-a-z0-9+&@#\/%?=~+[-a-z0-9+&/%=~+];
return text.replace(re,function(match,lparen,url){
var rParens='';
lParens=lParens | |'';
//尝试从url中删除相同数量的右参数
//因为有左括号。这里,lParenCounter必须是
//RegExp对象。不能使用文本
//而(/\(/g.exec(lParens)){…}
//因为需要一个对象来存储lastIndex状态。
var lParenCounter=/\(/g;
while(lParenCounter.exec(lParens)){
var-m;
//我们希望m[1]是贪婪的,除非前面有一个周期
//右括号。这些测试不能简化为
///(.*)(\.?\).*)/.exec(url)
//因为如果(.*)是贪婪的,那么\.?永远不会有机会。
if(m=/(.*)(\.\).*)/.exec(url)||
/(.*)(\).*)/.exec(url)){
url=m[1];
rParens=m[2]+rParens;
}
}
返回lParens+“”+rParens;
});
}
注意:我在“var re”中的“@”符号有错误-我只是用@@

替换了它,因为这个问题得到了很好的回答

函数replaceurlwithhtmlinks(文本){
变量re=/(\(.*)?\b((?:https?| ftp | file):\/\/[-a-z0-9+&@#\/%?=~+[-a-z0-9+&/%=~+];
return text.replace(re,function(match,lparen,url){
var rParens='';
lParens=lParens | |'';
//尝试从url中删除相同数量的右参数
//因为有左括号。这里,lParenCounter必须是
//RegExp对象。不能使用文本
//而(/\(/g.exec(lParens)){…}
//因为需要一个对象来存储lastIndex状态。
var lParenCounter=/\(/g;
while(lParenCounter.exec(lParens)){
var-m;
//我们希望m[1]是贪婪的,除非前面有一个周期
//右括号。这些测试不能简化为
///(.*)(\.?\).*)/.exec(url)
//因为如果(.*)是贪婪的,那么\.?永远不会有机会。
if(m=/(.*)(\.\).*)/.exec(url)||
/(.*)(\).*)/.exec(url)){
url=m[1];
rParens=m[2]+rParens;
}
}
返回lParens+“”+rParens;
});
}
注意:我在“var re”中的“@”符号有错误-我只是用@@

替换了它,因为这个问题得到了很好的回答

函数replaceurlwithhtmlinks(文本){
变量re=/(\(.*)?\b((?:https?| ftp | file):\/\/[-a-z0-9+&@#\/%?=~+[-a-z0-9+&/%=~+];
return text.replace(re,function(match,lparen,url){
var rParens='';
lParens=lParens | |'';
//尝试从url中删除相同数量的右参数
//因为有左括号。这里,lParenCounter必须是
//RegExp对象。不能使用文本
//而(/\(/g.exec(lParens)){…}
//因为需要一个对象来存储lastIndex状态。
var lParenCounter=/\(/g;
while(lParenCounter.exec(lParens)){
var-m;
//我们希望m[1]是贪婪的,除非前面有一个周期
//右括号。这些测试不能简化为
///(.*)(\.?\).*)/.exec(url)
//因为如果(.*)是贪婪的,那么\.?永远不会有机会。
if(m=/(.*)(\.\).*)/.exec(url)||
/(.*)(\).*)/.exec(url)){
url=m[1];
rParens=m[2]+rParens;
}
}
返回lParens+“”+rParens;
});
}
注意:我在“var re”中的“@”符号有错误-我只是用@@

替换了它,因为这个问题得到了很好的回答

函数replaceurlwithhtmlinks(
function replaceURLWithHTMLLinks(text) {
    text = text.replace(/a/g, "--ucsps--");
    text = text.replace(/b/g, "--uspds--");
    var arrRegex = [
        /(\([^)]*\b)((?:https?|ftp|file):\/\/[-A-Za-z0-9+&@#\/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#\/%=~_()|])(\))/ig,
        /(\([^)]*\b)((?:https?|ftp|file):\/\/[-A-Za-z0-9+&@#\/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#\/%=~_()|])(.?\b)/ig,
        /()(\b(?:https?|ftp|file):\/\/[-a-z0-9+&@#\/%?=~_()|!:,.;]*[-a-z0-9+&@#\/%=~_()|])(.?\b)/ig];
    for (i = 0; i < arrRegex.length; i++) {
        text = text.replace(arrRegex[i], "$1a$2b$3");
    }
    text = text.replace(/a([^b]*)b/g, "<a href='$1'>$1</a>");
    text = text.replace(/--ucsps--/g, "a");
    text = text.replace(/--uspds--/g, "b");
    return text;
}
var elm = document.getElementById('trythis');
elm.innerHTML = replaceURLWithHTMLLinks(elm.innerHTML);
function replaceURLWithHTMLLinks(text) {
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    return text.replace(exp,"<a href='$1'>$1</a>"); 
}
function replaceURLWithHTMLLinks(text) {
    var re = /(\(.*?)?\b((?:https?|ftp|file):\/\/[-a-z0-9+&@#\/%?=~_()|!:,.;]*[-a-z0-9+&@#\/%=~_()|])/ig;
    return text.replace(re, function(match, lParens, url) {
        var rParens = '';
        lParens = lParens || '';

        // Try to strip the same number of right parens from url
        // as there are left parens.  Here, lParenCounter must be
        // a RegExp object.  You cannot use a literal
        //     while (/\(/g.exec(lParens)) { ... }
        // because an object is needed to store the lastIndex state.
        var lParenCounter = /\(/g;
        while (lParenCounter.exec(lParens)) {
            var m;
            // We want m[1] to be greedy, unless a period precedes the
            // right parenthesis.  These tests cannot be simplified as
            //     /(.*)(\.?\).*)/.exec(url)
            // because if (.*) is greedy then \.? never gets a chance.
            if (m = /(.*)(\.\).*)/.exec(url) ||
                    /(.*)(\).*)/.exec(url)) {
                url = m[1];
                rParens = m[2] + rParens;
            }
        }
        return lParens + "<a href='" + url + "'>" + url + "</a>" + rParens;
    });
}