You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改preg_match规则,让用户名仅允许单引号而非反斜杠

解决正则允许单引号但禁止反斜杠的问题

原正则里的字符组部分[0-9A-Za-z!@#$%^&_ -\\'],因为PHP双引号字符串会把\\解析成单个反斜杠,所以字符组里实际包含了反斜杠、连字符和单引号,这就是为啥会允许反斜杠的原因。

要只保留单引号、去掉反斜杠的话,直接把字符组里的\\删掉就行,单引号在双引号字符串里不需要额外转义。修改后的代码:

preg_match("/^(?=.*[a-zA-Z].*[a-zA-Z].*[a-zA-Z])[0-9A-Za-z!@#$%^&_ -']{3,48}$/", $hostname)

补充说明:字符组里的-放在_和'之间不会被解析为范围符(二者ASCII码无连续范围),所以不用转义也能正常生效。

内容的提问来源于stack exchange,提问作者Doogie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:07:01