eregi to preg_match不工作

时间:2013-07-25 12:26:57

标签: php preg-match

如何将此更改为非字母数字? (在谷歌我看到所有想要字母数字的人)

代码:

         /* Check if username is not alphanumeric */
     else if(!preg_match("/^[a-zA-Z0-9,]+$/", $subuser)){
        $form->setError($field, "* Username not alphanumeric");
     }

它一直在说

* Username not alphanumeric

这是我用eregi时的旧部分

         /* Check if username is not alphanumeric */
     else if(!eregi("^([0-9a-z])+$", $subuser)){
        $form->setError($field, "* Username not alphanumeric");
     }

3 个答案:

答案 0 :(得分:3)

使用正则表达式最简单的方法是在^字符类中使用[]来否定if:

if(preg_match('/[^a-z0-9]/i', $subuser)) {
    //contains at least one non alpha-num character.
}

但是,PHP还为此提供了内置函数:ctype_alnum()

if(!ctype_alnum($subuser)) { .... }

答案 1 :(得分:2)

您可以将special character class identifier :alnum:,一起使用,并将其用^取消:

if(!preg_match("/[^:alnum:,]+$/", $subuser))

答案 2 :(得分:0)

"/^[a-zA-Z0-9,]+$/"更改为"/[^a-zA-Z0-9,]+/"并尝试