[php/regexp] domeinnamen valideren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

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?

Acties:
  • 0 Henk 'm!

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 ]


Acties:
  • 0 Henk 'm!

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 ]


Acties:
  • 0 Henk 'm!

  • eborn
  • Registratie: April 2000
  • Laatst online: 18-09 19:03
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.

Acties:
  • 0 Henk 'm!

  • Sjeik
  • Registratie: Augustus 2001
  • Laatst online: 29-05 14:39
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...