2012-04-23 76 views
0

这是怎么回事?preg_match错误未知修饰符'{'

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

第一个正则表达式我想要一个长度为1-7的字符串,只包含字母。

第二个正则表达式我想要一个包含字母和数字的字符串!最后。

+0

如果第一个字符串的长度应该是1-7个字符,那么'{1,7} +'没有意义 - 它会匹配1-7个字符,但会匹配一次或多次。所以8个字符也会很好等。 – Niko 2012-04-23 21:39:25

回答

7

你错过了周围的正则表达式的分隔符:

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

文档:http://www.php.net/manual/en/regexp.reference.delimiters.php – Wiseguy 2012-04-23 21:39:12

+0

感谢它的工作。我虽然认为单引号是分隔符:D – Seltjoek 2012-04-23 21:41:55

3

{1,7} - 这意味着1至7

{1,7}+ - 这是尴尬的,因为+表示前面的字符应至少一次。通常用作[a-z]+ < - 要求a-z

{1,7}+是错误的。

+0

谢谢删除它! – Seltjoek 2012-04-23 21:54:00

相关问题