吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 749|回复: 4
收起左侧

[已解决] PHP正则表达式完全匹配问题?

[复制链接]
绫织梦 发表于 2023-4-5 01:32
本帖最后由 Corona 于 2023-4-5 08:31 编辑

[PHP] 纯文本查看 复制代码
if (!preg_match('[_a-zA-Z0-9]', $username)) {
            exit('用户名中包含特殊字符!仅允许使用:数字,字母,下划线!');
        }
        if (!preg_match('[_a-zA-Z0-9]', $passwd)) {
            exit('密码中包含特殊字符!仅允许使用:数字,字母,下划线!');
        }


PHP初学者一枚……

我写的代码如上,我需要验证用户名与密码中的字符是否符合要求(仅允许出现:数字,大小写字母,下划线)
但是这样写,似乎就算符合要求也会运行到exit()处……

所以想请教一下大佬们,要实现这样的一个功能,需要怎么写?

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
为之奈何? + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

陌小全 发表于 2023-4-5 01:50
if (!preg_match('/^[a-zA-Z0-9_]+$/', $username) || !preg_match('/^[a-zA-Z0-9_]+$/', $password)) {
    echo "用户名和密码只能包含数字、大小写字母和下划线";
    exit();
}

免费评分

参与人数 1热心值 +1 收起 理由
绫织梦 + 1 谢谢@Thanks!

查看全部评分

涛之雨 发表于 2023-4-5 05:38
本帖最后由 涛之雨 于 2023-4-5 05:43 编辑

要求相同,拼接匹配即可。
此外,数字大小写和下划线使用\w即可匹配
[PHP] 纯文本查看 复制代码
if (!preg_match('/^\w+$/', $username.$password)) {
    echo "用户名和密码只能包含数字、大小写字母和下划线";
    exit(-1);
}

或者判断是否有不符合的字符(更简洁)
[PHP] 纯文本查看 复制代码
if (preg_match('/\W/', $username.$password)) {
    echo "用户名和密码只能包含数字、大小写字母和下划线";
    exit(-1);
}

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
OrData + 1 + 1 感谢“更简洁”部分,感觉学到了。
绫织梦 + 1 谢谢@Thanks!

查看全部评分

admib木木 发表于 2023-4-5 12:58
[PHP] 纯文本查看 复制代码
if (!preg_match('/^[a-zA-Z0-9_]+$/', $username)) {
    exit('用户名中包含特殊字符!仅允许使用:数字,字母,下划线!');
}
if (!preg_match('/^[a-zA-Z0-9_]+$/', $passwd)) {
    exit('密码中包含特殊字符!仅允许使用:数字,字母,下划线!');

}
这里使用了正则表达式 /^[a-zA-Z0-9_]+$/ 来匹配用户名和密码。其中:
  • ^ 表示从字符串开头开始匹配;
  • [a-zA-Z0-9_] 匹配数字、大小写字母和下划线;
  • + 表示匹配一个或多个前面的字符;
  • $ 表示匹配到字符串结尾。
因此,整个正则表达式的意思是:匹配只由数字、大小写字母和下划线组成的字符串。如果用户名或密码中包含其他字符,则正则表达式不会匹配成功,进而执行 exit() 函数。
 楼主| 绫织梦 发表于 2023-4-5 16:34
admib木木 发表于 2023-4-5 12:58
[mw_shl_code=php,true]if (!preg_match('/^[a-zA-Z0-9_]+$/', $username)) {
    exit('用户名中包含特殊 ...

哦哦原来是这样,学到了,感谢解答~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 00:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表