জাভাস্ক্রিপ্ট ব্যবহার করে ইউআরএল বৈধকরণের চেষ্টা করা হচ্ছে


84

আমি একটি ইউআরএল এবং প্রদর্শন বার্তাটি যাচাই করতে চাই। নীচে আমার কোডটি দেওয়া হয়েছে:

$("#pageUrl").keydown(function(){
        $(".status").show();
        var url = $("#pageUrl").val();

        if(isValidURL(url)){

        $.ajax({
            type: "POST",
            url: "demo.php",
            data: "pageUrl="+ url,
            success: function(msg){
                if(msg == 1 ){
                    $(".status").html('<img src="images/success.gif"/><span><strong>SiteID:</strong>12345678901234456</span>');
                }else{
                    $(".status").html('<img src="images/failure.gif"/>');
                }
            }
            });

            }else{

                    $(".status").html('<img src="images/failure.gif"/>');
            }

    });


function isValidURL(url){
    var RegExp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;

    if(RegExp.test(url)){
        return true;
    }else{
        return false;
    }
} 

আমার সমস্যা এখন এটি যথাযথ URL প্রবেশ করার সময়ও এটি ত্রুটি বার্তা প্রদর্শন করবে যতক্ষণ না এটি নিয়মিত প্রকাশের সাথে মেলে না এবং এটি URL এর মতো কিছু হলেও সত্য হয় "http://wwww"

আমি আপনার পরামর্শ প্রশংসা করি।


4
জাভাস্ক্রিপ্ট চেকিং সহজেই হ্যাক করা যায় বলে সার্ভার-সাইড চেকিংও যুক্ত করতে ভুলবেন না।
রেন্ডেল

ইউআরএল ম্যাচিংয়ের (জাভাস্ক্রিপ্টে) আরও নির্ভরযোগ্য রেগেক্স খুঁজে পাওয়া তুলনামূলকভাবে সহজ হওয়া উচিত। পার্শ্ব নোটে, আমি ভেরিয়েবলগুলি (যেমন RegExpআপনার উদাহরণ হিসাবে ) মূলধন না করার পরামর্শ দিচ্ছি যদি না তারা কনস্ট্রাক্টর / নেমস্পেস (যা আপনার পরিবর্তনশীল নয়)। এছাড়াও ভুলে যাবেন না যে RegExp#testইতিমধ্যে বুলিয়ান ফেরত দেয় যাতে আপনার সত্যই প্রয়োজন হয় না যদি / অন্য; শুধু কর - return re.test(url)
কঙ্গাক্স

4
দ্রষ্টব্য: url "wwww"; একটি বৈধ url। আপনি
wwww

Jquery প্লাগইন বৈধতা URL টিও বৈধ করে। docs.jquery.com/ প্লাগইনস
ভ্যালিডেশন /

4
গুগলের ক্লোজার লাইব্রেরিতে goog.string.linkifyনামের স্থানটিতে একটি URL শংসাপত্র রয়েছে যা আপনি উত্স থেকে এখানে ছাঁটাই করতে পারেন: কোডfindFirstUrl() . google.com/p/closure-library/source/browse/closure/goog/… দেখুন ।
টেকনেটিয়াম

উত্তর:


69

কেউ জ্যাকারি বৈধকরণ প্লাগইনটির উল্লেখ করেছেন, আপনি যদি ইউআরএলকে বৈধতা দিতে চান তবে ওভারকিল বলে মনে হচ্ছে, এখানে প্লাগইন থেকে রেজেক্সের লাইনটি রয়েছে:

return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);

তারা এখান থেকে এটিকে এখানে পেয়েছে: http://projects.scottsplayground.com/iri/

@ নাহহধঃ দ্বারা নিরীক্ষণ এটি আপডেট হয়েছে:

        // Copyright (c) 2010-2013 Diego Perini, MIT licensed
        // https://gist.github.com/dperini/729294
        // see also https://mathiasbynens.be/demo/url-regex
        // modified to allow protocol-relative URLs
        return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|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\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );

উত্স: https://github.com/jzaefferer/jquery- માન્ય করণ/ blob/ c1db10a34c0847c28a5bd30e3ee1117e137ca834/ src / core.js#L1349


JQuery বৈধকরণের পদ্ধতির ডোমেন নামগুলিতে আন্ডারস্কোর ("_") অনুমতি দেয়। আমি যতদূর জানতে পেরেছি এটি ডোমেন নামে অনুমোদিত নয়। কেবল হাইফেনই অনুমোদিত ("-")। পিএইচপি'র filter_var($url, FILTER_VALIDATE_URL)উদাহরণস্বরূপ, ডোমেন নামগুলিতে আন্ডারস্কোরগুলি মঞ্জুরি দেয় না বলে মনে হচ্ছে।
ভ্লাদিয়াস

\ U00A0-। UD7FF পরিসীমা অত্যধিক বিস্তৃত। "(201 u201D) এর মতো উদ্ধৃতি অক্ষরগুলি এই সীমার মধ্যে। উদাহরণস্বরূপ, যদি প্রথমে শ্বেত স্পেসে বিভাজন হয়, একটি উদ্ধৃত বাক্যটির সমাপ্তি 'এটি ”' হতে পারে techn
मेटाটা এই


4
রেজেক্স 1306 লাইনে চলে গেছে - github.com/jzaefferer/jquery- માન્યকরণ
একমাত্র এক

4
@Kousha: www.google.com নয় একটি কার্যকর URL, তাই এটি পরীক্ষা ব্যর্থ করা উচিত নয়।
মিঃ ল্যান্স ই স্লোয়ান

47

রেজেক্স ব্যবহার করে ইউআরএলগুলি পার্স করা ব্যবহারিক নয়। আরএফসি 1738 বিধিগুলির সম্পূর্ণ প্রয়োগের ফলে প্রচুর পরিমাণে লম্বা রেইগেক্স তৈরি হবে (ধরে নেওয়া এটি এমনকি সম্ভব)। অবশ্যই আপনার বর্তমান এক্সপ্রেশনটি অনেকগুলি বৈধ ইউআরএল ব্যর্থ করে এবং অবৈধকে পাস করে।

পরিবর্তে:

ক। যথাযথ ইউআরএল পার্সার ব্যবহার করুন যা প্রকৃত নিয়মগুলি অনুসরণ করে। (আমি জাভাস্ক্রিপ্টের জন্য একটিরও চিনি না; এটি সম্ভবত ওভারকিল হতে পারে You আপনি সার্ভারের পাশ দিয়ে এটি করতে পারেন)। বা,

খ। যে কোনও অগ্রণী বা চলমান স্থানগুলি কেবল ছাঁটাই করুন, তারপরে এটির সামনে আপনার পছন্দের একটি স্কিম রয়েছে (সাধারণত 'http: //' বা 'https: //') এবং এটিকে রেখে দিন it বা,

গ। ইউআরএলটি ব্যবহার করার চেষ্টা করুন এবং শেষে কী রয়েছে তা দেখুন, উদাহরণস্বরূপ এটি প্রেরণ করে সার্ভার সাইড থেকে HTTP হেড অনুরোধ করা হচ্ছে। যদি আপনি একটি 404 বা সংযোগ ত্রুটি পান তবে এটি সম্ভবত ভুল।

url " http: // wwww " এর মতো কিছু হলেও এটি সত্য হয় ।

ওয়েল, এটি প্রকৃতপক্ষে একটি কার্যকর বৈধ URL।

'Wwww' এর মতো হোস্টনামটি আসলে আছে কিনা তা আপনি যদি পরীক্ষা করতে চান তবে ডিএনএসে এটি অনুসন্ধান করা ছাড়া আপনার কোনও বিকল্প নেই। আবার এটি সার্ভার-সাইড কোড হবে।


44
এটা কি বাস্তববাদী? হ্যাঁ. এটি প্রশ্নের উত্তর দেয় বা বাস্তবায়নের জন্য যথেষ্ট তথ্য সরবরাহ করে? নং
কোরওওয়ার্ড

4
আইআরআই ( আরএফসি 3987 ) কে খুব কাছ থেকে মিলানোর জন্য একটি রেইজেক্সের জন্য , " ডাব্লু 3 সি অনুগত URL এর জন্য নিয়মিত প্রকাশ? " দেখুন। মনে রাখবেন যে এটি কোনও আইআরআই- এর সাথে কেবল URL ( আরএফসি 1738 ) বা ইউআরআই ( আরএফসি 3986 ) নয় match
রবিন উইনস্লো

33
function validateURL(textval) {
    var urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/;
    return urlregex.test(textval);
}

এটি URL এর মতো সত্য ফিরে আসতে পারে:

http://stackoverflow.com/questions/1303872/url-validation-using-javascript

বা:

http://regexlib.com/DisplayPatterns.aspx?cattabindex=1&categoryId=2

4
RegExpকনস্ট্রাক্টর কেন ? আক্ষরিক এখানে ঠিক আছে। কেন একটি ভেরিয়েবল অবজেক্ট বরাদ্দ? function validateURL(textval) { return /^(http...$/.test(textval) }সামান্য খাটো এবং পরিষ্কার।
ডেভিডচেম্বার

7
[... & amp; ...] আপনার প্রত্যাশা মতো করবে না। একটি অক্ষর শ্রেণি স্ট্রিংগুলির জন্য অনুমতি দেয় না।
জেনিয়ো

এই ইউআরএলটি বৈধ হওয়া সত্ত্বেও বৈধতা যাচাই করে না: uk.reuters.com/article/2013/02/25/… (শেষ থেকে 20130225 সরান এবং এটি বৈধ)
ytoledano

असेডএফ.এসডিএফ এটির সাথে সত্য প্রত্যাবর্তন করছে। কেন?
রাজা আহমেদ

এটি "বৈধ ইউআরএল" দ্বারা আপনি কী বোঝেন তার উপর নির্ভর করে। আপনার দেওয়া সমস্ত উদাহরণ ব্রাউজারের অ্যাড্রেস বারে পেস্ট করার পরে (বৈধ হিসাবে বিবেচিত) কাজ করবে এবং সম্ভবত এর মান হিসাবে ব্যবহৃত হলে ব্যর্থ হবে (অবৈধ হিসাবে বিবেচিত) <a href="">
ট্রেজার্ড

16

আমি http এবং https ইউআরএলগুলি পরীক্ষা করতে rfc1738 এবং rfc3986 এ একটি URL বৈধতা ফাংশন বেসও লিখেছি। আমি এই মডুলারটি ধরে রাখার চেষ্টা করি, যাতে এটি আরও ভালভাবে বজায় রাখা যায় এবং নিজের প্রয়োজনীয়তার সাথে মানিয়ে নেওয়া যায়।

এক লাইনে RegExp এই পোস্টের শেষে প্রদর্শিত হবে।

RegExp কিছু আন্তর্জাতিক ডোমেন বা IPv4 নম্বর সহ HTTP এবং HTTPS ইউআরএল গ্রহণ করে। আইপিভি 6 এখনও সমর্থিত নয়।

window.isValidURL = (function() {// wrapped in self calling function to prevent global pollution

     //URL pattern based on rfc1738 and rfc3986
    var rg_pctEncoded = "%[0-9a-fA-F]{2}";
    var rg_protocol = "(http|https):\\/\\/";

    var rg_userinfo = "([a-zA-Z0-9$\\-_.+!*'(),;:&=]|" + rg_pctEncoded + ")+" + "@";

    var rg_decOctet = "(25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])"; // 0-255
    var rg_ipv4address = "(" + rg_decOctet + "(\\." + rg_decOctet + "){3}" + ")";
    var rg_hostname = "([a-zA-Z0-9\\-\\u00C0-\\u017F]+\\.)+([a-zA-Z]{2,})";
    var rg_port = "[0-9]+";

    var rg_hostport = "(" + rg_ipv4address + "|localhost|" + rg_hostname + ")(:" + rg_port + ")?";

    // chars sets
    // safe           = "$" | "-" | "_" | "." | "+"
    // extra          = "!" | "*" | "'" | "(" | ")" | ","
    // hsegment       = *[ alpha | digit | safe | extra | ";" | ":" | "@" | "&" | "=" | escape ]
    var rg_pchar = "a-zA-Z0-9$\\-_.+!*'(),;:@&=";
    var rg_segment = "([" + rg_pchar + "]|" + rg_pctEncoded + ")*";

    var rg_path = rg_segment + "(\\/" + rg_segment + ")*";
    var rg_query = "\\?" + "([" + rg_pchar + "/?]|" + rg_pctEncoded + ")*";
    var rg_fragment = "\\#" + "([" + rg_pchar + "/?]|" + rg_pctEncoded + ")*";

    var rgHttpUrl = new RegExp( 
        "^"
        + rg_protocol
        + "(" + rg_userinfo + ")?"
        + rg_hostport
        + "(\\/"
        + "(" + rg_path + ")?"
        + "(" + rg_query + ")?"
        + "(" + rg_fragment + ")?"
        + ")?"
        + "$"
    );

    // export public function
    return function (url) {
        if (rgHttpUrl.test(url)) {
            return true;
        } else {
            return false;
        }
    };
})();

এক লাইনে RegExp:

var rg = /^(http|https):\/\/(([a-zA-Z0-9$\-_.+!*'(),;:&=]|%[0-9a-fA-F]{2})+@)?(((25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])(\.(25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])){3})|localhost|([a-zA-Z0-9\-\u00C0-\u017F]+\.)+([a-zA-Z]{2,}))(:[0-9]+)?(\/(([a-zA-Z0-9$\-_.+!*'(),;:@&=]|%[0-9a-fA-F]{2})*(\/([a-zA-Z0-9$\-_.+!*'(),;:@&=]|%[0-9a-fA-F]{2})*)*)?(\?([a-zA-Z0-9$\-_.+!*'(),;:@&=\/?]|%[0-9a-fA-F]{2})*)?(\#([a-zA-Z0-9$\-_.+!*'(),;:@&=\/?]|%[0-9a-fA-F]{2})*)?)?$/;

4
এটা অসাধারণ! আপনি এটি বিভিন্ন অংশে ভেঙে দিয়েছিলেন তা খুব সহায়ক - আমি কোনও বৃহত রেইগেক্সকে অন্ধভাবে বিশ্বাস করতে চাই না।
জেসন

12

একটি অনুরূপ পরিস্থিতিতে আমি এই সঙ্গে পলায়ন:

someUtils.validateURL = function(url) {
    var parser = document.createElement('a');
    try {
        parser.href = url;
        return !!parser.hostname;
    } catch (e) {
        return false;
    }
};

অর্থাৎ ব্রাউজারগুলি যদি এটি করতে পারে তবে চাকাটি কেন আবিষ্কার করবেন? তবে অবশ্যই এটি ব্রাউজারে কাজ করবে।

পার্সড ইউআরএলের বিভিন্ন অংশ রয়েছে ঠিক কীভাবে ব্রাউজার এটি ব্যাখ্যা করবে:

parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port;     // => "8080"
parser.pathname; // => "/path/"
parser.search;   // => "?search=test"
parser.hash;     // => "#hash"
parser.host;     // => "example.com:3000"

এগুলি ব্যবহার করে আপনি প্রয়োজনীয়তার উপর নির্ভর করে আপনার যাচাইকরণের ক্রিয়াকে উন্নত করতে পারেন। একমাত্র ত্রুটি এটি হ'ল এটি আপেক্ষিক ইউআরএল গ্রহণ করবে এবং বর্তমান পৃষ্ঠা সার্ভারের হোস্ট এবং পোর্ট ব্যবহার করবে। তবে আপনি এটিকে আপনার সুবিধার জন্য ব্যবহার করতে পারেন, অংশগুলি থেকে URL টি পুনরায় একত্রিত করে এবং সর্বদা এটি আপনার এজেএক্স পরিষেবায় পূর্ণরূপে প্রেরণ করে।

যা validateURLগ্রহণ করবে না তা হ'ল অবৈধ ইউআরএল, উদাহরণস্বরূপ http:\:8883মিথ্যা প্রত্যাবর্তন করবে তবে :1234বৈধ এবং এটি ব্যাখ্যা করা হবেhttp://pagehost.example.com/:1234 যথার্থ পথ হিসাবে

হালনাগাদ

এই পদ্ধতির ক্রোম এবং অন্যান্য ওয়েবকিট ব্রাউজারগুলির সাথে আর কাজ করা হচ্ছে না। এমনকি ইউআরএল অবৈধ থাকলেও হোস্টনাম কিছু মান দিয়ে পূর্ণ হয়, যেমন থেকে নেওয়াbase । এটি এখনও ইউআরএল এর কিছু অংশ বিশ্লেষণ করতে সহায়তা করে, তবে এটির বৈধতা দেওয়ার অনুমতি দেয় না।

var parsedURL = new URL(url)ব্যতিক্রমগুলি ব্যবহার করা এবং ধরা সম্ভব সম্ভাব্য আরও ভাল কোনও নিজস্ব-পার্সার পদ্ধতি approach যেমন দেখুন URL টি এপিআই । সমস্ত বড় ব্রাউজার এবং নোডজেএস দ্বারা সমর্থিত, যদিও এখনও পরীক্ষামূলক হিসাবে চিহ্নিত।


4
এটি <script>alert();</script>
সত্যের

4
@ সুবিন আধুনিক ব্রাউজারগুলিতে এই উত্তরের পন্থাটি আর কাজ করছে না। এটি মনোযোগ আনার জন্য ধন্যবাদ। প্রকৃতপক্ষে, হোস্টনামটি আপনি কোনও স্ট্রিংই পাস না করেই ভরাট।
অ্যালেক্স পাকা

8

http://angularjs.org/ থেকে আমি সেরা রেইগেক্স পেয়েছি

var urlregex = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/;


আমি যদি এটি পরীক্ষা করি: ---- / ^ (ftp | http | https): \ / \ / (\ w +: {0,1} \ w * @)? (\ এস +) (: [0-9] + )? (\ / | \ / ([[\ ডাব্লু #!:।? + = &% @! \ - \ /])))? $ /। পরীক্ষা (' abc.com.com.com' ) এটি আসল মান ফেরায় । আমি মনে করি এটির url এ কেবল 2 .কমের অনুমতি দেওয়া উচিত।
অভিষেক

5

এটিই আমার পক্ষে কাজ করেছে:

function validateURL(value) {
    return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
    }

একটি সত্য বা মিথ্যা ফিরে পেতে ফাংশনটি কল করার বিষয়টি কেবল সেখানে থেকে রয়েছে:

validateURL(urltovalidate);

শীর্ষস্থানীয়, এটি আইপি ঠিকানার জন্য ব্যর্থ হবে।
আকিল ফার্নান্দেস 21

5

আমি জানি এটি বেশ পুরানো প্রশ্ন তবে এটির কোনও গ্রহণযোগ্য উত্তর না থাকায় আমি আপনাকে ইউআরআই.জেএস ফ্রেমওয়ার্কটি ব্যবহার করার পরামর্শ দিচ্ছি: https://github.com/medialize/URI.js

আপনি চেষ্টা / ক্যাচ ব্লক ব্যবহার করে ত্রুটিযুক্ত ইউআরআই পরীক্ষা করতে এটি ব্যবহার করতে পারেন:

function isValidURL(url)
{
    try {
        (new URI(url));
        return true;
    }
    catch (e) {
        // Malformed URI
        return false;
    }
}

অবশ্যই এটা ভালো কিছু বিবেচনা করব "% @" একটি ভাল গঠিত আপেক্ষিক কোনো URI করুন ... তাই আমি সুপারিশ করছি URI.js পড়া এপিআই উদাহরণস্বরূপ আরো চেক সঞ্চালন, আপনি কি নিশ্চিত ব্যবহারকারী প্রবেশ করে একটি ভাল গঠিত করতে চান তাহলে আপনি এর মতো করতে পারেন নিখুঁত URL:

function isValidURL(url)
{
    try {
        var uri = new URI(url);
        // URI has a scheme and a host
        return (!!uri.scheme() && !!uri.host());
    }
    catch (e) {
        // Malformed URI
        return false;
    }
}

এটি https: // লোকালহোস্ট: 86 / এসিডেফঘজক্লায় ব্যর্থ হয়েছে
শিবাম চাওলা

আপনার ইউআরএল বৈধ, সুতরাং পরীক্ষা সত্য ফিরে। আমি অনুমান করি আপনি কি করতে চান তা পরীক্ষা করে দেখুন যে প্রোটোকলটি http (গুলি), তবে কেবল !!uri.scheme().match(/^http(s?)$/)পরীক্ষায় একটি যুক্ত করুন ।
রোমেন


2

আপনি সম্প্রতি স্ট্যান্ডার্ড URL টি ব্যবহার করতে পারেন । ব্রাউজার সমর্থন সেরা স্কেচি, লিঙ্কটি দেখুন। অবৈধ URL গুলির জন্য ছোঁড়ার new URL(str)নিশ্চয়তা রয়েছে TypeError

উপরে বর্ণিত হিসাবে, http://wwwwএকটি বৈধ ইউআরএল।


1

আপনি যদি আরও নির্ভরযোগ্য রেজেক্সের সন্ধান করেন তবে রিজেক্সলিব দেখুন। আপনি সম্ভবত আগ্রহী হতে চান পৃষ্ঠা এখানে:

http://regexlib.com/Search.aspx?k=url

যখন ব্যক্তিটি এখনো টাইপ করছে দেখাচ্ছে ত্রুটি বার্তা হিসাবে, থেকে ইভেন্ট পরিবর্তন keydownকরতে blurএবং তারপর শুধুমাত্র একবার পরবর্তী উপাদান ব্যক্তিকে প্যাচসমূহ চেক করবে।




0

ডেমো: http://jsbin.com/uzimeb/1/edit

function checkURL(value) {
    var urlregex = new RegExp("^(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&amp;%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&amp;%\$#\=~_\-]+))*$");
    if (urlregex.test(value)) {
        return (true);
    }
    return (false);
}

0

বিভিন্ন সমাধানের তুলনা করার জন্য আমি একটি দুর্দান্ত উত্স পেয়েছি: https://mathiasbynens.be/demo/url-regex

সেই পৃষ্ঠা অনুসারে, ডায়গোপারিনি থেকে কেবল সমাধানই সমস্ত পরীক্ষায় পাস করে। এই যে 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

0

আমি গুগলে ইউআরএল প্রচুর পরিমাণে যাচাই করেছিলাম এবং কেউই আমার পক্ষে কাজ করে না। উদাহরণস্বরূপ আমি 'aa.com' এর মতো লিঙ্কগুলিতে বৈধ দেখতে চাই। আমি ডট সাইন ইন স্ট্রিংয়ের জন্য নিরীহ চেক চাই।

function isValidUri(str) {
  var dotIndex = str.indexOf('.');
  return (dotIndex > 0 && dotIndex < str.length - 2);
}

এটি স্ট্রিংয়ের শুরু এবং শেষে থাকা উচিত নয় (বর্তমানে আমাদের কাছে একটি অক্ষরের শীর্ষ স্তরের ডোমেন নাম নেই) names


-1

এখানে একটি নিয়মিত প্রকাশ যা বিলটি ফিট করতে পারে (এটি খুব দীর্ঘ):

/^(?:\u0066\u0069\u006C\u0065\u003A\u002F{2}(?:\u002F{2}(?:(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])*\u0040)?(?:\u005B(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){6}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|\u003A{2}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){5}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){4}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A)?[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){3}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){0,2}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){2}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){0,3}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){0,4}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){0,5}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){0,6}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2})\u005D|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])|(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039](?:(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D]+)?[\u0041-\u005A\u0061-\u007A\u0030-\u0039])?|(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039](?:(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D]+)?[\u0041-\u005A\u0061-\u007A\u0030-\u0039])?\u002E)+[\u0041-\u005A\u0061-\u007A\u0030-\u0039](?:(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D]+)?[\u0041-\u005A\u0061-\u007A\u0030-\u0039])?))(?:\u003A(?:\u0030-\u0035\u0030-\u0039{0,4}|\u0036\u0030-\u0034\u0030-\u0039{3}|\u0036\u0035\u0030-\u0034\u0030-\u0039{2}|\u0036\u0035\u0035\u0030-\u0032\u0030-\u0039|\u0036\u0035\u0035\u0033\u0030-\u0035))?(?:\u002F(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D\u003A\u0040]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])*)*|\u002F(?:(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D\u003A\u0040]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])+(?:\u002F(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D\u003A\u0040]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])*)*)?|(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D\u003A\u0040]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])+(?:\u002F(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D\u003A\u0040]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])*)*)|[\u0041-\u005A\u0061-\u007A][\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002B\u002D\u002E]*\u003A(?:\u002F{2}(?:(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])*\u0040)?(?:\u005B(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){6}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|\u003A{2}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){5}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){4}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A)?[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){3}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){0,2}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){2}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){0,3}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){0,4}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2}(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035]))|(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){0,5}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}|(?:(?:[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4}\u003A){0,6}[\u0030-\u0039\u0041-\u0046\u0061-\u0066]{1,4})?\u003A{2})\u005D|(?:(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])\u002E){3}(?:[\u0030-\u0039]|[\u0031-\u0039][\u0030-\u0039]|\u0031[\u0030-\u0039]{2}|\u0032[\u0030-\u0034][\u0030-\u0039]|\u0032\u0035[\u0030-\u0035])|(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039](?:(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D]+)?[\u0041-\u005A\u0061-\u007A\u0030-\u0039])?|(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039](?:(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D]+)?[\u0041-\u005A\u0061-\u007A\u0030-\u0039])?\u002E)+[\u0041-\u005A\u0061-\u007A\u0030-\u0039](?:(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D]+)?[\u0041-\u005A\u0061-\u007A\u0030-\u0039])?))(?:\u003A(?:\u0030-\u0035\u0030-\u0039{0,4}|\u0036\u0030-\u0034\u0030-\u0039{3}|\u0036\u0035\u0030-\u0034\u0030-\u0039{2}|\u0036\u0035\u0035\u0030-\u0032\u0030-\u0039|\u0036\u0035\u0035\u0033\u0030-\u0035))?(?:\u002F(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D\u003A\u0040]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])*)*|\u002F(?:(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D\u003A\u0040]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])+(?:\u002F(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D\u003A\u0040]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])*)*)?|(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D\u003A\u0040]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])+(?:\u002F(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D\u003A\u0040]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])*)*)(?:\u003F(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D\u003A\u0040\u002F\u003F]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])*)?(?:\u0023(?:[\u0041-\u005A\u0061-\u007A\u0030-\u0039\u002D\u002E\u005F\u007E\u0021\u0024\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u003B\u003D\u003A\u0040\u002F\u003F]|\u0025[\u0030-\u0039\u0041-\u0046\u0061-\u0066][\u0030-\u0039\u0041-\u0046\u0061-\u0066])*)?)$/

এর ব্যবহারে কিছু সতর্কতা রয়েছে, এটি ইউআরআই যাচাই করে না যা ব্যবহারকারীর নাম (যেমন "ব্যবহারকারীর নাম: পাসওয়ার্ড") পরে অতিরিক্ত তথ্য থাকে contain এছাড়াও, শুধুমাত্র আইপিভি 6 ঠিকানা আইপি আক্ষরিক সিনট্যাক্সের মধ্যে থাকতে পারে এবং "আইপিভিফিউচার" সিনট্যাক্স বর্তমানে উপেক্ষা করা হয় এবং এই নিয়মিত অভিব্যক্তির বিরুদ্ধে বৈধতা স্বীকার করে না। বন্দর নম্বরগুলি 0 থেকে 65,535 এর মধ্যেও সীমাবদ্ধ। এছাড়াও, কেবলমাত্র ফাইল স্কিম ট্রিপল স্ল্যাশ ব্যবহার করতে পারে (যেমন "ফাইল: /// ইত্যাদি / সিসকনফিগ") এবং ইউআরআইয়ের কোয়েরি এবং খণ্ড উভয় অংশই উপেক্ষা করতে পারে। অবশেষে, এটি নিয়মিত ইউআরআই-এর দিকে পরিচালিত হয়, আইআরআই নয়, সুতরাং ASCII চরিত্রের সেটটিতে বিস্তৃত ফোকাস।

এই নিয়মিত অভিব্যক্তিটি প্রসারিত হতে পারে তবে এটি ইতিমধ্যে জটিল এবং এটি যথেষ্ট দীর্ঘ। এটি "100% নির্ভুল" বা "বাগ ফ্রি" হতে চলেছে এমন গ্যারান্টিও আমি দিতে পারি না তবে এটি সমস্ত স্কিমের জন্য ইউআরআইকে সঠিকভাবে বৈধ করা উচিত।

আপনার যেকোনও স্কিম-নির্দিষ্ট প্রয়োজনীয়তার জন্য অতিরিক্ত যাচাইকরণ করতে হবে বা ইউআরআই স্বাভাবিককরণ করতে হবে কারণ এই নিয়মিত অভিব্যক্তিটি ইউআরআইয়ের একটি বিস্তৃত পরিসরকে বৈধতা দেবে।


-2

isValidURLনিম্নলিখিত হিসাবে আপনার ফাংশন সম্পাদনা করার চেষ্টা করুন :

function isValidURL(url) {
    var encodedURL = encodeURIComponent(url);
    var isValid = false;

    $.ajax({
      url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + encodedURL + "%22&format=json",
      type: "get",
      async: false,
      dataType: "json",
      success: function(data) {
        isValid = data.query.results != null;
      },
      error: function(){
        isValid = false;
      }
    });

    return isValid;
}

এই কৌতুক করতে হবে।


যেহেতু এজ্যাক্স অ্যাসিঙ্ক, তাই কি ভালিড সবসময়ই মিথ্যা প্রত্যাবর্তিত হবে, তাই না?
chepe263

নং আজাক্স অ্যাসিঙ্ক, তবে কলটি একবার দেখুন। এটি "async: false" নির্দিষ্ট করে।
ওহাদ

সিঙ্ক্রোনাস কলগুলি সর্বোত্তমভাবে এড়ানো যায় কারণ তাদের কর্মক্ষমতা জড়িত। এছাড়াও সমস্যাযুক্ত হ'ল যদি আপনার নেটওয়ার্কটি বন্ধ থাকে তবে এখানে ফাংশনটি ভুল ফলাফলগুলি ফিরিয়ে দেবে। তদ্ব্যতীত, এটি ইয়াহুতে আপনার সমস্ত url ফাঁস করবে।
ফিলিপ ক্লেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.