PHP正则验证特定格式字符串:三段式规则校验求助
正则表达式解决方案
要实现你需要的字符串校验,核心是给第一部分的3位数字加上不重复的约束,修改后的正则表达式如下:
^(?!.*(.).*\1)[0-9]{3}\*[0-9]+$
各部分解析:
^:匹配字符串起始位置(?!.*(.).*\1):负向预查断言,确保第一部分的3位数字无重复:(.)捕获第一部分中的任意一个数字.*\1检查该数字是否在第一部分的后续位置再次出现?!表示如果存在重复数字,整个匹配直接失败
[0-9]{3}:匹配恰好3位数字(结合预查确保无重复)\*:匹配固定的*符号(转义是因为*在正则中是特殊元字符)[0-9]+:匹配至少1位的整数(允许数字重复)$:匹配字符串结束位置
示例验证:
- 验证通过:
908*22→ 第一部分数字无重复,位数符合要求 - 验证失败:
223*443→ 第一部分数字2重复,触发预查断言不匹配 - 验证失败:
34*5000→ 第一部分仅2位数字,[0-9]{3}不匹配
内容的提问来源于stack exchange,提问作者kingerror
相关产品推荐
相关产品推荐

