Programmering har gjort det enkelt å håndtere strukturerte og ustrukturerte tekstdata. Verktøy som regulære uttrykk og eksterne biblioteker gjør disse oppgavene mye enklere.
Du kan bruke de fleste språk, inkludert Python og JavaScript, for å validere URL-er ved hjelp av et regulært uttrykk. Dette eksempelet på regex er ikke perfekt, men du kan bruke det til å sjekke URL-er for enkle brukstilfeller.
Et regulært uttrykk for å validere en URL
Regex for å validere en URL presentert i denne artikkelen er ikke perfekt. Det kan være flere eksempler på gyldige nettadresser som kan mislykkes i denne regex-valideringen. Dette inkluderer URL-er som involverer IP-adresser, ikke-ASCII-tegn og protokoller som FTP. Følgende regulære uttrykk validerer bare de vanligste nettadressene.
Regex vil vurdere en URL som gyldig hvis den oppfyller følgende betingelser:
- Strengen skal begynne med enten http eller https etterfulgt av ://.
- Den kombinerte lengden på underdomenet og domenet må være mellom 2 og 256. Den skal bare inneholde alfanumeriske tegn og/eller spesialtegn.
- TLD-en (Top-Level Domain) skal bare inneholde alfabetiske tegn, og den skal være mellom to og seks tegn lang.
- Slutten av URL-strengen kan inneholde alfanumeriske tegn og/eller spesialtegn. Og det kan gjentas null eller flere ganger.
Du kan validere en URL i JavaScript ved å bruke følgende regulære uttrykk:
^(http (s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$
På samme måte kan du bruke følgende regulære uttrykk for å validere en URL i Python:
^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$
Hvor:
- (http|https)://) sørger for at strengen starter med enten http eller https etterfulgt av ://.
- [-a-zA-Z0-9@:%._\\+~#?&//=] indikerer alfanumeriske tegn og/eller spesialtegn. Den første forekomsten av dette settet representerer settet med tegn som skal tillates i underdomene- og domenedelen. Mens den andre forekomsten av dette settet representerer settet med tegn som skal tillates i spørringsstrengen eller underkatalogdelen.
- {2,256} representerer 2 til 256 (begge inkludert) ganger forekomstindikator. Dette indikerer at den kombinerte lengden på underdomenet og domenet må være mellom to og 256.
- \. representerer prikktegnet.
- [a-z]{2,6} betyr alle små bokstaver fra a til å med en lengde mellom to og seks. Dette representerer settet med tegn som skal tillates i toppdomenedelen.
- \b representerer grensen til et ord, dvs. starten på et ord eller slutten av et.
- * er en repetisjonsoperator som indikerer null eller flere kopier av spørringsstrengen, parameterne eller underkatalogene.
- ^ og $ angi start og slutt på strengen.
Hvis du er ukomfortabel med uttrykket ovenfor, sjekk ut en nybegynnerguide til regulære uttrykk først. Vanlige uttrykk tar litt tid å venne seg til. Utforsker noen eksempler som validere brukerkontodetaljer ved hjelp av regulære uttrykk skal hjelpe.
Regex ovenfor tilfredsstiller følgende typer nettadresser:
- 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
Bruke det regulære uttrykket i et program
Koden som brukes i dette prosjektet er tilgjengelig i en GitHub-depot og er gratis for deg å bruke under MIT-lisensen.
Dette er en Python-tilnærming for å validere en URL:
import re
defvalider URL(url):
regulært uttrykk = "^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$"
r = re.compile (regex)hvis (re.Søk(r, url)):
skrive ut("Gyldig")
ellers:
skrive ut("Ikke gyldig")
url1 = "https://www.linkedin.com/"
validerURL(url1)
url2 = "http://apple"
validerURL(url2)
url3 = "iywegfuykegf"
validateURL(url3)
url4 = "https://w"
validerURL(url4)
Denne koden bruker Python's re.compile() metode for å kompilere det regulære uttrykksmønsteret. Denne metoden godtar regex-mønsteret som en strengparameter og returnerer et regex-mønsterobjekt. Dette regex-mønsterobjektet brukes videre til å se etter forekomster av regex-mønsteret inne i målstrengen ved å bruke forskning() metode.
Hvis den finner minst én match, vil den forskning() metoden returnerer det første treffet. Merk at hvis du vil søke etter alle samsvarene til mønsteret fra målstrengen, må du bruke re.findall() metode.
Å kjøre koden ovenfor vil bekrefte at den første URL-en er gyldig, men at resten av dem ikke er det.
På samme måte kan du validere en URL i JavaScript ved å bruke følgende kode:
funksjonvalider URL(url) {
hvis(/^(http (s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/g.test (url)) {
console.log('Gyldig');
} ellers {
console.log('Ikke gyldig');
}
}
valider URL("https://www.linkedin.com/");
valider URL("http://apple");
valider URL("iywegfuykegf");
valider URL("https://w");
Igjen, kjøring av denne koden vil bekrefte at den første URL-en er gyldig og at resten av dem er ugyldige. Den bruker JavaScript kamp() metode for å matche målstrengen mot et regulært uttrykksmønster.
Valider viktige data ved hjelp av regulære uttrykk
Du kan bruke regulære uttrykk for å søke, matche eller analysere tekst. De brukes også til naturlig språkbehandling, mønstertilpasning og leksikalsk analyse.
Du kan bruke dette kraftige verktøyet til å validere viktige typer data som kredittkortnumre, brukerkontodetaljer, IP-adresser og mer.