PHP正则表达式完全匹配问题?
本帖最后由 Corona 于 2023-4-5 08:31 编辑if (!preg_match('', $username)) {
exit('用户名中包含特殊字符!仅允许使用:数字,字母,下划线!');
}
if (!preg_match('', $passwd)) {
exit('密码中包含特殊字符!仅允许使用:数字,字母,下划线!');
}
PHP初学者一枚……
我写的代码如上,我需要验证用户名与密码中的字符是否符合要求(仅允许出现:数字,大小写字母,下划线)
但是这样写,似乎就算符合要求也会运行到exit()处……
所以想请教一下大佬们,要实现这样的一个功能,需要怎么写?
if (!preg_match('/^+$/', $username) || !preg_match('/^+$/', $password)) {
echo "用户名和密码只能包含数字、大小写字母和下划线";
exit();
} 本帖最后由 涛之雨 于 2023-4-5 05:43 编辑
要求相同,拼接匹配即可。
此外,数字大小写和下划线使用\w即可匹配
if (!preg_match('/^\w+$/', $username.$password)) {
echo "用户名和密码只能包含数字、大小写字母和下划线";
exit(-1);
}
或者判断是否有不符合的字符(更简洁)
if (preg_match('/\W/', $username.$password)) {
echo "用户名和密码只能包含数字、大小写字母和下划线";
exit(-1);
}
if (!preg_match('/^+$/', $username)) {
exit('用户名中包含特殊字符!仅允许使用:数字,字母,下划线!');
}
if (!preg_match('/^+$/', $passwd)) {
exit('密码中包含特殊字符!仅允许使用:数字,字母,下划线!');
}
这里使用了正则表达式 /^+$/ 来匹配用户名和密码。其中:
[*]^ 表示从字符串开头开始匹配;
[*] 匹配数字、大小写字母和下划线;
[*]+ 表示匹配一个或多个前面的字符;
[*]$ 表示匹配到字符串结尾。
因此,整个正则表达式的意思是:匹配只由数字、大小写字母和下划线组成的字符串。如果用户名或密码中包含其他字符,则正则表达式不会匹配成功,进而执行 exit() 函数。 admib木木 发表于 2023-4-5 12:58
if (!preg_match('/^+$/', $username)) {
exit('用户名中包含特殊 ...
哦哦原来是这样,学到了,感谢解答~
{:301_993:}
页:
[1]