0

在制作一个验证用户 URL 并在前面添加 http: 的函数时,我必须将 www、https 和 // 的情况考虑为有效的 url。我现在写的方式(见下文),我只在前面加上 http: ,这样//stackoverflow.com的情况就不会变成http:////stackoverflow.com

这意味着像 stackoverflow.com 这样的 url 变成了http:stackoverflow.com

在 Firefox 和 Chrome 中,这工作得很好,但是这些 URL 将被各种浏览器和设备点击。它是通用的吗?为 // 案例重写此检查很容易,但我对答案很感兴趣。

前置方法:

function prependHTTPtoWebURL() {
    var url = (el('org_website').value);
    var httpVar;
    var testFor;

    if (url) {// If there's a website URL value
        testFor = url.toLowerCase();
        if (testFor.indexOf("http") != 0){
            httpVar = 'http:'; //add it
            url = httpVar + url;
         el('org_website').value = url;
     }
    }
}
4

2 回答 2

3

尝试使用正则表达式。例如检查此代码:

var someurl = "www.google.com";
var otherurl = "google.com";
var anotherurl = "//google.com";

function prependHTTPtoWebURL(url) {
    var newurl = url.replace(/^(http)?(:)?(\/\/)?/i,'');
    return 'http://' + newurl;
}

console.log(prependHTTPtoWebURL(someurl));
console.log(prependHTTPtoWebURL(otherurl));
console.log(prependHTTPtoWebURL(anotherurl));

console.log 中的输出将是:

http://www.google.com
http://google.com
http://google.com

由于您在第一个上指定了子域 (www),因此受到尊重。它避免以四个对角线结尾,例如http:////. 如果您的网址类似于:google.com,它也会正确修复它。

你可以在这里看到它:http: //jsfiddle.net/zRBUj/

编辑:添加/i提到的凯特。

于 2013-08-01T16:18:58.310 回答
0

将 http: 更改为 http://

有关更多信息,请参阅这些链接:

URL 剖析

网络如何运作

于 2013-08-01T16:19:00.677 回答