Програмирането улесни работата със структурирани и неструктурирани текстови данни. Инструменти като регулярни изрази и външни библиотеки правят тези задачи много по-лесни.
Можете да използвате повечето езици, включително Python и JavaScript, за валидиране на URL адреси с помощта на регулярен израз. Този примерен регулярен израз не е идеален, но можете да го използвате, за да проверите URL адресите за прости случаи на употреба.
Регулярен израз за валидиране на URL
Регулярният израз за валидиране на URL адрес, представен в тази статия, не е съвършен. Възможно е да има множество примери за валидни URL адреси, които може да не преминат проверката на регулярния израз. Това включва URL адреси, включващи IP адреси, не-ASCII знаци и протоколи като FTP. Следният регулярен израз валидира само най-често срещаните URL адреси.
Регулярният израз ще счита URL за валиден, ако отговаря на следните условия:
- Низът трябва да започва с едно от двете http или https следван от ://.
- Комбинираната дължина на поддомейна и домейна трябва да бъде между 2 и 256. Трябва да съдържа само буквено-цифрови знаци и/или специални знаци.
- TLD (домейнът от първо ниво) трябва да съдържа само азбучни знаци и трябва да е дълъг между два и шест знака.
- Краят на URL низа може да съдържа буквено-цифрови знаци и/или специални знаци. И може да се повтори нула или повече пъти.
Можете да потвърдите URL в JavaScript, като използвате следния регулярен израз:
^(http (s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$
По подобен начин можете да използвате следния регулярен израз, за да потвърдите URL в Python:
^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$
Където:
- (http|https)://) гарантира, че низът започва с http или https, последван от ://.
- [-a-zA-Z0-9@:%._\\+~#?&//=] обозначава буквено-цифрови знаци и/или специални знаци. Първият екземпляр на този набор представлява набор от знаци, които да бъдат разрешени в частта за поддомейн и домейн. Докато вторият екземпляр на този набор представлява набор от знаци, които да бъдат разрешени в низа на заявката или част от поддиректорията.
- {2,256} представлява 2 до 256 (и двете включително) индикатор за поява. Това показва, че общата дължина на поддомейна и домейна трябва да бъде между две и 256.
- \. представлява знака точка.
- [a-z]{2,6} означава всички малки букви от a до z с дължина между две и шест. Това представлява набор от знаци, които да се разрешат в частта на домейна от първо ниво.
- \b представлява границата на дума, т.е. началото на дума или края на такава.
- * е оператор за повторение, който показва нула или повече копия на низа на заявката, параметри или поддиректории.
- ^ и $ посочете съответно началото и края на низа.
Ако се чувствате неудобно от горния израз, проверете ръководство за начинаещи за регулярни изрази първи. Регулярните изрази отнемат известно време, за да свикнете. Проучване на някои примери като валидиране на подробностите за потребителския акаунт с помощта на регулярни изрази трябва да помогне.
Горният регулярен израз отговаря на следните типове URL адреси:
- https://www.something.com/
- http://www.something.com/
- https://www.something.edu.co.in
- http://www.url-with-path.com/path
- https://www.url-with-querystring.com/?url=has-querystring
- http://url-without-www-subdomain.com/
- https://mail.google.com
Използване на регулярен израз в програма
Кодът, използван в този проект, е наличен в a GitHub хранилище и е безплатен за използване под лиценза на MIT.
Това е подход на Python за валидиране на URL:
импортиране повторно
дефvalidateURL(url):
регулярен израз = "^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$"
r = re.compile (regex)ако (повторно.Търсене(r, URL адрес)):
печат ("Валиден")
друго:
печат ("Не важи")
url1 = "https://www.linkedin.com/"
validateURL(url1)
url2 = "http://apple"
validateURL(url2)
url3 = "iywegfuykegf"
validateURL(url3)
url4 = "https://w"
validateURL(url4)
Този код използва Python re.compile() метод за компилиране на модела на регулярен израз. Този метод приема модела на регулярен израз като параметър на низ и връща обект на шаблон на регулярен израз. Този обект на шаблон на регулярен израз се използва допълнително за търсене на появявания на модела на регулярен израз в целевия низ, използвайки re.search() метод.
Ако намери поне едно съвпадение, re.search() метод връща първото съвпадение. Обърнете внимание, че ако искате да търсите всички съвпадения на шаблона от целевия низ, трябва да използвате re.findall() метод.
Изпълнението на горния код ще потвърди, че първият URL е валиден, но останалите не са.
По същия начин можете да потвърдите URL адрес в JavaScript, като използвате следния код:
функцияvalidateURL(URL адрес) {
ако(/^(http (s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/g.test (url)) {
console.log('Валиден');
} друго {
console.log('Не важи');
}
}
validateURL("https://www.linkedin.com/");
validateURL("http://apple");
validateURL("iywegfuykegf");
validateURL("https://w");
Отново стартирането на този код ще потвърди, че първият URL е валиден, а останалите са невалидни. Той използва JavaScript съвпада() метод за съпоставяне на целевия низ с шаблон на регулярен израз.
Валидирайте важни данни с помощта на регулярни изрази
Можете да използвате регулярни изрази за търсене, съвпадение или анализ на текст. Те се използват и за обработка на естествен език, съвпадение на шаблони и лексикален анализ.
Можете да използвате този мощен инструмент за валидиране на важни типове данни като номера на кредитни карти, подробности за потребителски акаунти, IP адреси и др.