php 只允许字母数字、破折号、下划线的正则表达式

pkwftd7m  于 2023-06-28  发布在  PHP
关注(0)|答案(2)|浏览(155)

我尝试只允许A-Z, a-z, 0-9, -, _
我使用下面的表达式,它是有效的:

preg_match('/^[a-zA-Z0-9-_]+$/i', $_POST['sign_up_username'])

这是做这件事的正确方法吗?

iszxjhcz

iszxjhcz1#

正则表达式不正确。将-移到字符类的末尾或开头,或者转义它,因为-在字符类中有特殊的含义。它表示字符类中的range。你可以用

^[-a-zA-Z0-9_]+$

\w = [a-zA-Z0-9_]

所以,你可以用

^[\w-]+$

此外,不需要i修饰符,最后是的,它只允许***A-Z大写和小写,数字,破折号和下划线***
这在PHP中就足够了

preg_match('/^[\w-]+$/', $_POST['sign_up_username'])
ctrmrzij

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”;
}

相关问题