मेरे पास एक सरल यूआरएल सत्यापनकर्ता है, तो खाली स्ट्रिंग के साथ http: //, https: //, ftp: // बदलें। यूआरएल सत्यापनकर्ता शायद हर दूसरे वैधकर्ता के रूप में काम करता है।यूआरआई रेगेक्स: यूआरएल मान्य
अब मैं चाहता हूं कि यूआरएल पास हो गया है, तो https: //, http: // लें और var b
के लिए इसे हटा दें।
तो मैंने जो किया है, मैंने एक और रेगेक्स बनाया है जो https: //, http: //, ftp: // आदि को कैप्चर करता है और कहता है कि यूआरएल ने लंबे परीक्षण को पारित किया है, दूसरा परीक्षण प्राप्त करें और इसे प्रतिस्थापित करें खाली स्ट्रिंग के साथ।
$("button").on('click', function() {
var url = $('#in').val();
var match = /^([a-z][a-z0-9\*\-\.]*):\/\/(?:(?:(?:[\w\.\-\+!$&'\(\)*\+,;=]|%[0-9a-f]{2})+:)*(?:[\w\.\-\+%!$&'\(\)*\+,;=]|%[0-9a-f]{2})[email protected])?(?:(?:[a-z0-9\-\.]|%[0-9a-f]{2})+|(?:\[(?:[0-9a-f]{0,4}:)*(?:[0-9a-f]{0,4})\]))(?::[0-9]+)?(?:[\/|\?](?:[\w#!:\.\?\+=&@!$'~*,;\/\(\)\[\]\-]|%[0-9a-f]{2})*)?$/;
var protomatch = /^(https?|ftp):\/\/(.*)/;
if (match.test(url)) { // IF VALID
console.log(url + ' is valid');
// if valid replace http, https, ftp etc with empty
var b = url.replace(protomatch.test(url), '');
console.log(b)
} else { // IF INVALID
console.log('not valid')
}
});
क्यों यह काम नहीं करता:
यहाँ मैं के साथ आया है?
कृपया परिभाषित करें "0 काम नहीं करता" – Alnitak
क्योंकि protomatch.test (url) सत्य या गलत लौटाता है, स्ट्रिंग नहीं – Hoff
आप जिस रेगेक्स का उपयोग कर रहे हैं वह सैनिटी की सीमा से परे है। आपको इसे तोड़ना होगा, अन्यथा यह पात्रों का एक अप्रबंधनीय, अस्पष्ट, अनजान ढेर है और इस स्थिति में यह आपको कोई अच्छा काम नहीं करेगा। एक चरणबद्ध दृष्टिकोण आज़माएं: चरण एक: बुनियादी संरचनात्मक परीक्षण, समूहों में उन बुनियादी संरचनाओं को पकड़ना। चरण 2: समूहों पर उनकी सामग्री निर्धारित करने के लिए अधिक बुनियादी परीक्षण: चरण 3: उन लोगों से व्यक्तिगत वैधता परीक्षण और मूल्य निष्कर्षण। हां, यह थोड़ा और कोड है, लेकिन यह आपके सिर को चोट नहीं पहुंचाएगा और इसमें कम कीड़े होंगे। – Tomalak