Regex serial code

  • Beste,


    Voor een nieuwe optie ben ik bezig met serial codes.
    Deze zijn in onderstaand formaat:
    X9X9-X9X9-X9X9-X9X9 (dus 4x4 letters of cijfers)


    Dit probeer ik te checken met deze regex code en [func]preg_match[/func]:

    PHP
    "^([a-zA-Z0-9]{4})-([a-zA-Z0-9]{4})-([a-zA-Z0-9]{4})-([a-zA-Z0-9]{4})$"


    Alleen hij schijnt ze niet goed te keuren, wat heb ik verkeerd gedaan?


    Alvast erg bedankt.


    Met vriendelijke groeten,


    Lars

  • Er bestaan verschillende ereg() functies eregi() is bijvoorbeeld niet hoofdletter gevoellig. Maar bij preg_match() moet je dat op een andere manier aangeven: aan het einde van de string. Maar dan zou het moeilijk te bepalen zijn wat hij de regex hoort en wat een modifier is.


    Daarom moet je het begin en eind van de regex aangeven met tekens naar eigen keus. De slash wordt het meest gebruikt. Het eerste teken in de string moet dus ook gebruikt worden om het einde van de regex aan te geven, in jouw geval is dat ^. Maar aangezien het dakje een speciale betekenis heeft (het matched het begin van een string) wil je waarschijnlijk iets anders gebruiken.


    PHP
    preg_match('/^([a-zA-Z0-9]{4})-([a-zA-Z0-9]{4})-([a-zA-Z0-9]{4})-([a-zA-Z0-9]{4})/', ...)

    is dus wat je wilt. De slash zou je ook kunnen vervangen door een hekje, een een tilde, een plus teken of wat je maar wilt.


    Zie http://www.php.net/manual/en/regexp.reference.delimiters.php

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!