Toon posts:

[regexp] domeinnaamextentie 1x matchen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

ik ben bezig met een regexp in PHP om te controleren of een domeinnaam welke is ingevuld geldig is en door mij geregisteerd kan worden.

ik heb nu de volgende regexp:

code:
1
!(^[a-z]+[a-z0-9\-]+)(.nl|.be|.com|.net|.org|.info|.us|.name|.biz){1}!i


maar nu komen domeinen met een dubbele extensie (nu.nl.nl bijv.) er wel doorheen. Wat doe ik fout?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Allereerst vind ik een regexp om te kijken of jij de domeinnaam kunt registreren niet erg verstandig, maar dat is je vraag niet ;)

Je vergeet de anchor aan het eind van je regexp :) Deze regexp test alleen of de match aan het begin van de string gemaakt wordt en niet of de complete string matcht met de regexp.

Als je hem dus aanpast naar
code:
1
!(^[a-z]+[a-z0-9\-]+)(.nl|.be|.com|.net|.org|.info|.us|.name|.biz){1}$!i

note the $
komt het denk ik meer in de richting. Overigens kun je de + na de eerste class [a-z] weglaten omdat [a-z] ook voorkomt in de class erna.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
Verder hoef je het liggende streepje "-" niet te escapen tussen vierkante haken - als hij maar helemaal aan het begin of eind staat van de reeks.

Pas de replâtrage, la structure est pourrie.


Verwijderd

De punten wel even escapen natuurlijk ;)

  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
Als je nu handig bent, haal je die punt buiten de haken om de tlds: hoef je hem maar één keer te schrijven.
Overigens accepteert je regexp nu alleen domeinnamen met minstens twee tekens voor de punt (twee keer een "+"); dat lijkt me niet de bedoeling?
Daarnaast voegt "{1}" niets toe, dat kun je net zo goed weglaten (tenzij je het er daardoor logischer uit vindt zien).

[ Voor 22% gewijzigd door Apollo_Futurae op 13-11-2003 21:24 . Reden: toevoeging ]

Pas de replâtrage, la structure est pourrie.