Programmeren heeft het gemakkelijk gemaakt om met gestructureerde en ongestructureerde tekstuele gegevens om te gaan. Tools zoals reguliere expressies en externe bibliotheken maken deze taken een stuk eenvoudiger.
U kunt de meeste talen gebruiken, inclusief Python en JavaScript, om URL's te valideren met behulp van een reguliere expressie. Deze voorbeeldregex is niet perfect, maar u kunt deze gebruiken om URL's te controleren op eenvoudige gebruiksscenario's.
Een reguliere expressie om een URL te valideren
De regex om een URL te valideren die in dit artikel wordt gepresenteerd, is niet perfect. Er kunnen meerdere voorbeelden zijn van geldige URL's die deze regex-validatie mogelijk niet doorstaan. Dit omvat URL's met IP-adressen, niet-ASCII-tekens en protocollen zoals FTP. De volgende regex valideert alleen de meest voorkomende URL's.
De regex beschouwt een URL als geldig als deze aan de volgende voorwaarden voldoet:
- De tekenreeks moet beginnen met een van beide http of https gevolgd door ://.
- De gecombineerde lengte van het subdomein en domein moet tussen 2 en 256 liggen. Het mag alleen alfanumerieke tekens en/of speciale tekens bevatten.
- Het TLD (Top-Level Domain) mag alleen alfabetische tekens bevatten en moet tussen de twee en zes tekens lang zijn.
- Het einde van de URL-tekenreeks kan alfanumerieke tekens en/of speciale tekens bevatten. En het kan nul of meer keren worden herhaald.
U kunt een URL in JavaScript valideren met de volgende reguliere expressie:
^(http(s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$
Op dezelfde manier kunt u de volgende regex gebruiken om een URL in Python te valideren:
^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$
Waar:
- (http|https)://) zorgt ervoor dat de string begint met http of https gevolgd door ://.
- [-a-zA-Z0-9@:%._\\+~#?&//=] geeft alfanumerieke tekens en/of speciale tekens aan. Het eerste exemplaar van deze set vertegenwoordigt de set tekens die is toegestaan in het subdomein en het domeingedeelte. Terwijl de tweede instantie van deze set de set tekens vertegenwoordigt die is toegestaan in de querytekenreeks of het subdirectorygedeelte.
- {2,256} vertegenwoordigt 2 tot 256 (beide inclusief) keer voorkomen indicator. Dit geeft aan dat de gecombineerde lengte van het subdomein en domein tussen twee en 256 moet liggen.
- \. vertegenwoordigt het puntteken.
- [a-z]{2,6} betekent alle kleine letters van a tot z met een lengte tussen twee en zes. Dit vertegenwoordigt de set tekens die is toegestaan in het hoofddomeingedeelte.
- \B vertegenwoordigt de grens van een woord, d.w.z. het begin van een woord of het einde van een woord.
- * is een herhalingsoperator die nul of meer exemplaren van de querytekenreeks, parameters of submappen aangeeft.
- ^ En $ geven respectievelijk het begin en het einde van de string aan.
Als u zich niet op uw gemak voelt met de bovenstaande uitdrukking, check out een beginnershandleiding voor reguliere expressies Eerst. Het is even wennen aan reguliere expressies. Enkele voorbeelden verkennen, zoals het valideren van gebruikersaccountgegevens met behulp van reguliere expressies zou moeten helpen.
De bovenstaande regex voldoet aan de volgende typen URL's:
- 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
De reguliere expressie gebruiken in een programma
De code die in dit project wordt gebruikt, is beschikbaar in een GitHub-opslagplaats en is gratis voor u om te gebruiken onder de MIT-licentie.
Dit is een Python-benadering voor het valideren van een URL:
importeren met betrekking tot
defvalidatieURL(URL):
regex = "^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$"
r = opnieuw compileren (regex)als (met betrekking tot.zoekopdracht(R, url)):
afdrukken("Geldig")
anders:
afdrukken("Niet geldig")
URL1 = "https://www.linkedin.com/"
validatieURL(url1)
URL2 = "http://apple"
validerenURL(url2)
URL3 = "iywegfuykegf"
validerenURL(url3)
URL4 = "https://w"
validerenURL(url4)
Deze code maakt gebruik van Python's hercompileren() methode om het patroon van de reguliere expressie te compileren. Deze methode accepteert het regex-patroon als tekenreeksparameter en retourneert een regex-patroonobject. Dit regex-patroonobject wordt verder gebruikt om te zoeken naar instanties van het regex-patroon binnen de doeltekenreeks met behulp van de onderzoek() methode.
Als er ten minste één overeenkomst wordt gevonden, wordt de onderzoek() methode retourneert de eerste overeenkomst. Merk op dat als u wilt zoeken naar alle overeenkomsten met het patroon van de doeltekenreeks, u de re.findall() methode.
Als u de bovenstaande code uitvoert, wordt bevestigd dat de eerste URL geldig is, maar de rest niet.
Op dezelfde manier kunt u een URL in JavaScript valideren met behulp van de volgende code:
functievalidatieURL(url) {
als(/^(http(s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/g.test (URL)) {
console.log('Geldig');
} anders {
console.log('Niet geldig');
}
}
validerenURL("https://www.linkedin.com/");
validerenURL("http://apple");
validerenURL("iywegfuykegf");
validerenURL("https://w");
Nogmaals, het uitvoeren van deze code bevestigt dat de eerste URL geldig is en de rest ongeldig. Het maakt gebruik van JavaScript overeenkomst() methode om de doeltekenreeks af te stemmen op een patroon voor reguliere expressies.
Valideer belangrijke gegevens met behulp van reguliere expressies
U kunt reguliere expressies gebruiken om tekst te zoeken, te matchen of te ontleden. Ze worden ook gebruikt voor natuurlijke taalverwerking, patroonvergelijking en lexicale analyse.
U kunt deze krachtige tool gebruiken om belangrijke soorten gegevens te valideren, zoals creditcardnummers, gebruikersaccountgegevens, IP-adressen en meer.