Noen som er rå på regex? Sjekk for gyldig format på domene

adeneo

Medlem
Du må nok være laaangt mer spesifikk, domenenavn er notorisk vanskelige å matche med regex.

For eksempel. i tillegg til "domene.no", skal du matche ting som

"bbc.co.uk"
"köttvagnen.se"
"national.museum"
"hyphen-hyphen-hyphen.com"
"xn--80aaigamcyttbbjfe2c.xn--p1ai"
"✪df.ws/e4f"
"domene.no:3000"
"domene.no@kjell"

Generelt, ettersom et domenenavn kan inneholde 63 tegn, ikke starte eller slutte med hyphen, må ha en tld uten spesielle tegn på minst to tegn osv. så funker denne til det meste

Kode:
/^[a-zæøåA-ZÆØÅ0-9][a-zæøåA-ZÆØÅ0-9-]{1,61}[a-zæøåA-ZÆØÅ0-9]\.[a-zA-Z]{2,}$/

Denne eksluderer både "http/https/ws/ftp://" osv, samt "www", men feiler også på ting som "bbc.co.uk"

https://jsfiddle.net/c3447vmw/1/
 

adeneo

Medlem
Og deri ligger jo problemet, for det er liten forskjell på

"www .dot.no" og "bbc.co.uk" ...

det er samme antall punktum, slik at da må man tillate flere enn ett punktum, og sjekke spesielt for "www"

Nå er ikke jeg spesielt god på regex, og det er kanskje enklere måter å gjøre det på, men en slags "negative lookahead" for "www" samt en mulighet for et ekstra punktum, noe sånt

Kode:
/^(?!www)[a-zæøåA-ZÆØÅ0-9][a-zæøåA-ZÆØÅ0-9-]{1,61}[a-zæøåA-ZÆØÅ0-9]\.[a-zA-Z]{2,}(\.[a-zA-Z]{2,})?$/

https://jsfiddle.net/c3447vmw/2/
 
Topp