我尝试只允许A-Z, a-z, 0-9, -, _我使用下面的表达式,它是有效的:
A-Z, a-z, 0-9, -, _
preg_match('/^[a-zA-Z0-9-_]+$/i', $_POST['sign_up_username'])
这是做这件事的正确方法吗?
iszxjhcz1#
正则表达式不正确。将-移到字符类的末尾或开头,或者转义它,因为-在字符类中有特殊的含义。它表示字符类中的range。你可以用
-
range
^[-a-zA-Z0-9_]+$
也
\w = [a-zA-Z0-9_]
所以,你可以用
^[\w-]+$
此外,不需要i修饰符,最后是的,它只允许***A-Z大写和小写,数字,破折号和下划线***这在PHP中就足够了
i
preg_match('/^[\w-]+$/', $_POST['sign_up_username'])
ctrmrzij2#
如果(preg_match('/^[a-zA-Z 0 -9-_]+$/i',$str)== 1){
// string only contain the a to z , A to Z, 0 to 9, -_
echo“yes”;}否则{“no”;}
2条答案
按热度按时间iszxjhcz1#
正则表达式不正确。将
-
移到字符类的末尾或开头,或者转义它,因为-
在字符类中有特殊的含义。它表示字符类中的range
。你可以用也
所以,你可以用
此外,不需要
i
修饰符,最后是的,它只允许***A-Z大写和小写,数字,破折号和下划线***这在PHP中就足够了
ctrmrzij2#
如果(preg_match('/^[a-zA-Z 0 -9-_]+$/i',$str)== 1)
{
echo“yes”;
}
否则
{
“no”;
}