Toon posts:

[php/regexp] domeinnamen valideren

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik ben bezig met een regex om domeinnamen te valideren in php. De domeinnamen mogen de extensies .com/.net/.org/.nl/.be/.name/.us/.biz/.info hebben.

Nu heb ik het volgende in elkaar geklust:

code:
1
preg_match("/([a-z]+[a-z0-9_-])\.(nl|be|com|net|org|info|us|name|biz)/i",$domein)


Maar dit returnt altijd true, ook met bijv. spaties in het domein. Wat is er fout? wie geeft mij een duwtje in de goeie richting?

Verwijderd

In jouw regex maak je de fout dat er géén underscore ('_') in een domein mag staan en ook dat je moet aangeven dat in de regex _alleen_ die karakters in de string mogen staan die jij wilt toestaan (dit doe je met '^').

Ik heb het even getest, en zo werkt hij prima:

PHP:
1
2
3
4
5
6
7
$domein = 'do-mein.nl';

preg_match('!(^[a-zA-Z0-9\-]+)\.(nl|be|com|net|org|info|us|name|biz)!i', $domein, $array);

print('<pre>');
print_r($array);
print('</pre>');

[ Voor 11% gewijzigd door Verwijderd op 01-11-2003 21:19 ]


Verwijderd

Topicstarter
tnx,
noot dat de modifier i die je gebruikt de regexp insensetive maakt, dus a-zA-Z is niet nodig, en een domeinnaam moet altijd met een a-z beginnen, nieuwe regex wordt dus:

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

[ Voor 45% gewijzigd door Verwijderd op 01-11-2003 21:32 ]


  • eborn
  • Registratie: April 2000
  • Laatst online: 23:15
Het dakje ( ^ ) betekend het begin van de string (of regel, al naar gelang je input en modifiers). Een dollarteken ($) geeft het einde van de string/regel aan. Als je dus een bepaalde tekst precies wilt matchen dan kun je er het beste ^ en $ omheen zetten.

  • Sjeik
  • Registratie: Augustus 2001
  • Laatst online: 23-10 09:19
Verwijderd schreef op 01 november 2003 @ 21:27:
tnx,
noot dat de modifier i die je gebruikt de regexp insensetive maakt, dus a-zA-Z is niet nodig, en een domeinnaam moet altijd met een a-z beginnen, nieuwe regex wordt dus:

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

die begint niet met een a-z maar is wel een geldig domein! Ik vind het ook vreemd, maar wat je dus zegt klopt volgens mij niet helemaal :)

Was ik maar rijk en niet zo knap...