0

ユーザー URL を検証し、先頭に http: を追加する関数を作成する場合、有効な URL として www、https、および // を考慮する必要があります。私が今書いている方法(以下を参照)では、 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) を指定しているため、それが尊重されます。のように 4 つの対角線で終わることは避けhttp:////ます。URL が のようなものであれば:google.com、それも正しく修正されます。

ここでライブを見ることができます: http://jsfiddle.net/zRBUj/

編集/i:言及されたケイトを追加します。

于 2013-08-01T16:18:58.310 に答える
0

http: を http:// に変更します

詳細については、次のリンクを参照してください。

URL の構造

ウェブのしくみ

于 2013-08-01T16:19:00.677 に答える