0

ユーザーがテキストボックスに入力するときに、有効な形式の URL を確認することは可能ですか?

URL の形式は次のとおりです。

barfly.com
http://barfly.com
https://barfly.com
www.barfly.com

避けるべき tld (サフィックス) が本物であることが重要です: http://barfly.boo

スクリプトを定期的に再検討して、人気のある新しい tld (.tv、.mobi、.firm.in など) を考慮します。

これまでの私のコードは、次のような部分一致を許可しています。

www.barf  
http://www.barf

URL の一部だけでなく、全体を一致させる必要があります

これまでの私のコードは次のとおりです。

    $('#txtbxhost').live('input', function() {

    var inp = $("#txtbxhost").val();
    var urlregex = new RegExp("^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([0-9A-Za-z]+\.([a-z]+\.))");

    if ( urlregex.test(inp) ) 
    {
    // keep showing ok label
    } 
    else {
    // hide ok label
    }   
    })
4

1 に答える 1

1

まず、$.livejQuery 1.7 で廃止されたため、1.7 以降を使用している場合は、$.on代わりに使用してください。

より良い URL 正規表現については、次のいずれかを試してください: http://mathiasbynens.be/demo/url-regex。最も正確であるため、ディエゴペリーニのものを使用することもできます。

_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$_iuS

ただし、それはあなたがやろうとしていることに対してやり過ぎかもしれません。ほとんどのユースケースをカバーすると思われるものを 1 つ選んでください。

于 2013-06-13T18:49:58.037 に答える