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

如何在PHP中编写正确的正则表达式验证Creditor ID格式

排查思路
  • 缺少整串匹配限制:原规则用\A和\z强制匹配完整字符串,你写的PHP正则没有加开头^和结尾$锚点,会导致只要字符串中包含符合规则的子串就返回匹配成功,无法实现完整ID校验。
  • 多余的空格允许逻辑:原规则中没有允许各段之间存在空格,你自行添加的\s*会让带空格的不符合规范的ID通过校验,如果你没有兼容用户输入空格的业务需求,需要删掉所有\s*。
  • 字符集规则错误:字符集[]内的|不会被识别为“或”逻辑,只会被当作普通允许的字符,你额外添加的多个|、空格字符、多余的转义符都不符合原规则,会额外允许很多原规则不支持的字符。
  • 多余的分组嵌套:你写的正则里加了多层不必要的括号分组,虽然不会直接导致校验失效,但会额外占用内存存储匹配结果,属于非必要冗余。
修正后的代码

如果严格遵循原规则,不允许各段之间存在空格,使用如下写法即可(用#做正则分隔符避免转义斜杠):

preg_match('#^[a-zA-Z]{2}[0-9]{2}[A-Za-z0-9]{3}[A-Za-z0-9+?/:().,\'-]{1,28}$#', $_POST['creditor_id'])

如果确实有兼容用户输入时各段之间加空格的需求,保留\s*即可:

preg_match('#^[a-zA-Z]{2}\s*[0-9]{2}\s*[A-Za-z0-9]{3}\s*[A-Za-z0-9+?/:().,\'-]{1,28}$#', $_POST['creditor_id'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:09:00