Hi,

Ik geef een pattern een input.
<input type="text" id="naam" name="naam" required pattern="[A-Za-z0-9_-]{1,20}"> Enkel a-z, 0-9, _ en -


daarna controleer ik de invoer onder php. Je weet maar nooit wat foefelaars er zijn.

if(preg_match('[A-Za-z0-9_-]{1,20}', $name))

Hier krijg ik dan de fout "preg_match(): Unknown modifier '{'"

Hoe kan ik dit oplossen.

Jan
Overigens is A-Za-z0-9_ ook gewoon samen te vatten met \w
if( preg_match('/[\\w\\-]{1,20}/', $name) )
Bedankt
/w vind ik als beginner nogal onduidelijk. Als ik beter word met regex zal ik dat ook misschien gebruiken. Nu is a-z duidelijk letters.

Jan
Het probleem kwam dus neer op het ontbreken van delimiters.

Voor het begrip is belangrijk dat je een verklaring geeft waarom iets misgaat, en niet simpelweg/enkel een kloppende variant als antwoord geeft, zonder dat je vertelt wat de implicaties van de verschillen zijn.

Je zou hier ook de modifier "i" aan toe kunnen voegen, om de expressie case-insensitive te maken, dan kun je A-Z weglaten.
Thomas van den Heuvel op 31/07/2020 17:07:09

Het probleem kwam dus neer op het ontbreken van delimiters.

Voor het begrip is belangrijk dat je een verklaring geeft waarom iets misgaat, en niet simpelweg/enkel een kloppende variant als antwoord geeft, zonder dat je vertelt wat de implicaties van de verschillen zijn.

Je zou hier ook de modifier "i" aan toe kunnen voegen, om de expressie case-insensitive te maken, dan kun je A-Z weglaten.

Ik vind het raar. Soms werkt het ook zonder die delimiters.
De /i had ik al eens gevonden.

Bedankt
Jan R op 31/07/2020 19:14:38

Ik vind het raar. Soms werkt het ook zonder die delimiters.



Dat was bij de oude ereg-functies
https://www.php.net/ereg

Reageren