2012-04-23 3 views
0

Qu'est-ce qui ne va pas?erreur preg_match Modificateur inconnu '{'

if((preg_match('[a-zA-Z]{1,7}+',$_POST['naam'])) and (preg_match('[^\@\#\<\>\&\*\/]+[a-zA-Z0-9]+!',$_POST['password']))) 

la première regex je veux une chaîne de 1-7 long contenant seulement des lettres alphabétiques.

La deuxième regex je veux une chaîne contenant des lettres et des chiffres avec un! à la fin.

+0

Si la première chaîne est supposée avoir une longueur de 1 à 7 caractères, la valeur de {1,7} + n'a pas de sens - elle correspondrait à 1 à 7 caractères, mais une ou plusieurs fois. Donc, 8 caractères seraient bien aussi, etc – Niko

Répondre

7

vous manque un délimiteur autour de vos expressions régulières:

if((preg_match('/[a-zA-Z]{1,7}+/',$_POST['naam'])) and (preg_match('/[^\@\#\<\>\&\*\/]+[a-zA-Z0-9]+!/',$_POST['password']))) 
+1

Docs: http://www.php.net/manual/fr/regexp.reference.delimiters.php – Wiseguy

+0

Merci cela a fonctionné. Je pensais que les guillemets simples étaient les délimiteurs: D – Seltjoek

3

{1,7} - cela signifie 1 à 7

{1,7}+ - ce qui est gênant, comme + indique que précédent ombles doit être au moins une fois . Habituellement utilisé comme [a-z]+ < - requiert a-z

{1,7}+ est faux.

+0

merci supprimé! – Seltjoek

Questions connexes