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

PHP注册用户名/企业名正则验证失败,合法值无法匹配问题排查

问题原因

你的代码核心问题出在正则规则的写法错误,具体有2个问题:

  • 缺失量词限制,当前规则仅能匹配长度为2的字符串:
    你的正则/^[a-zA-Z0-9][a-zA-Z0-9\s.+&-]$/中,第二个允许字符的分组后没有加量词,默认仅匹配1次,加上开头的1个首字符,总共仅支持2位长度的内容,你测试的人名、企业名长度都远大于2,自然匹配失败。
  • 正则内错误使用了HTML实体编码的&:
    你从用户输入拿到的是原始&字符,不是HTML转义后的&,直接在正则里写&即可,不需要写HTML实体。

修正后的代码

$str = $input['s_name'];
// 这里加了{1,62}量词,代表除首字符外允许1-62个合法字符,总长度2-63位,可按需调整长度范围
$pattern = '/^[a-zA-Z0-9][a-zA-Z0-9\s.+&-]{1,62}$/';   
$validname = preg_match($pattern, $str);

if ($validname == 0) {
    $flash_error .= _m('The name is not valid') . PHP_EOL;
    $error[] = 10;
}

修正后的规则完全符合你的需求:首字符仅允许字母/数字,后续可包含字母、数字、空格、.、+、&、-,可正常匹配John Doe、T&T Production 007 B.V.A.这类内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:54:01