Programmering har gjort det enkelt att hantera strukturerad och ostrukturerad textdata. Verktyg som reguljära uttryck och externa bibliotek gör dessa uppgifter mycket enklare.
Du kan använda de flesta språk, inklusive Python och JavaScript, för att validera webbadresser med ett reguljärt uttryck. Detta exempel på regex är inte perfekt, men du kan använda det för att kontrollera webbadresser för enkla användningsfall.
Ett reguljärt uttryck för att validera en URL
Regexet för att validera en URL som presenteras i den här artikeln är inte perfekt. Det kan finnas flera exempel på giltiga webbadresser som kan misslyckas med denna regex-validering. Detta inkluderar URL: er som involverar IP-adresser, icke-ASCII-tecken och protokoll som FTP. Följande regex validerar bara de vanligaste webbadresserna.
Regexet kommer att betrakta en URL som giltig om den uppfyller följande villkor:
- Strängen ska börja med antingen http eller https följd av ://.
- Den kombinerade längden på underdomänen och domänen måste vara mellan 2 och 256. Den ska bara innehålla alfanumeriska tecken och/eller specialtecken.
- TLD (Top-Level Domain) bör endast innehålla alfabetiska tecken och den bör vara mellan två och sex tecken lång.
- Slutet på URL-strängen kan innehålla alfanumeriska tecken och/eller specialtecken. Och det kan upprepas noll eller fler gånger.
Du kan validera en URL i JavaScript med följande reguljära uttryck:
^(http (s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$
På samma sätt kan du använda följande regex för att validera en URL i Python:
^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$
Var:
- (http|https)://) ser till att strängen börjar med antingen http eller https följt av ://.
- [-a-zA-Z0-9@:%._\\+~#?&//=] indikerar alfanumeriska tecken och/eller specialtecken. Den första instansen av denna uppsättning representerar uppsättningen tecken som ska tillåtas i underdomänen och domändelen. Medan den andra instansen av denna uppsättning representerar uppsättningen tecken som ska tillåtas i frågesträngen eller underkatalogdelen.
- {2,256} representerar 2 till 256 (båda inklusive) gånger förekomstindikator. Detta indikerar att den kombinerade längden på underdomänen och domänen måste vara mellan två och 256.
- \. representerar punkttecknet.
- [a-z]{2,6} betyder alla små bokstäver från a till z med en längd mellan två och sex. Detta representerar uppsättningen tecken som ska tillåtas i toppdomändelen.
- \b representerar gränsen för ett ord, dvs början på ett ord eller slutet på ett.
- * är en upprepningsoperator som indikerar noll eller fler kopior av frågesträngen, parametrarna eller underkatalogerna.
- ^ och $ ange början och slutet av strängen.
Om du är obekväm med uttrycket ovan, kolla in en nybörjarguide till reguljära uttryck först. Reguljära uttryck tar lite tid att vänja sig vid. Utforska några exempel som validera användarkontodetaljer med hjälp av reguljära uttryck borde hjälpa.
Ovanstående regex uppfyller följande typer av webbadresser:
- 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
Använda det reguljära uttrycket i ett program
Koden som används i detta projekt är tillgänglig i en GitHub-förråd och är gratis för dig att använda under MIT-licensen.
Detta är en Python-metod för att validera en URL:
importera re
defvalidera URL(url):
regex = "^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$"
r = re.compile (regex)om (re.Sök(r, url)):
skriva ut("Giltig")
annan:
skriva ut("Inte giltig")
url1 = "https://www.linkedin.com/"
validateURL(url1)
url2 = "http://apple"
validateURL(url2)
url3 = "iywegfuykegf"
validateURL(url3)
url4 = "https://w"
validateURL(url4)
Denna kod använder Pythons omkompilera() metod för att kompilera det reguljära uttrycksmönstret. Denna metod accepterar regexmönstret som en strängparameter och returnerar ett regexmönsterobjekt. Detta regexmönsterobjekt används vidare för att leta efter förekomster av regexmönstret inuti målsträngen med hjälp av forskning() metod.
Om den hittar minst en matchning, forskning() metod returnerar den första matchningen. Observera att om du vill söka efter alla matchningar till mönstret från målsträngen, måste du använda re.findall() metod.
Att köra ovanstående kod kommer att bekräfta att den första URL: en är giltig men att resten av dem inte är det.
På samma sätt kan du validera en URL i JavaScript med följande kod:
fungeravalidera URL(url) {
om(/^(http (s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2 256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/g.test (url)) {
console.log('Giltig');
} annan {
console.log('Inte giltig');
}
}
validera webbadress("https://www.linkedin.com/");
validera webbadress("http://apple");
validera webbadress("iywegfuykegf");
validera webbadress("https://w");
Återigen, att köra den här koden kommer att bekräfta att den första URL: en är giltig och att resten av dem är ogiltiga. Den använder JavaScript match() metod för att matcha målsträngen mot ett reguljärt uttrycksmönster.
Validera viktiga data med hjälp av reguljära uttryck
Du kan använda reguljära uttryck för att söka, matcha eller analysera text. De används också för naturlig språkbehandling, mönstermatchning och lexikal analys.
Du kan använda detta kraftfulla verktyg för att validera viktiga typer av data som kreditkortsnummer, användarkontouppgifter, IP-adresser och mer.