如何编写正则表达式匹配无相邻数字、仅含a-g和1-7的1-20位字符串
正则表达式实现方案
可用正则表达式
你可以直接使用以下任意一种正则完成全部校验逻辑,无需额外遍历字符串:
方案1(逻辑直观,兼容性强)
^(?!.*[1-7]{2})[a-g1-7]{1,20}$
方案2(逐位校验,性能更优)
^([a-g]|[1-7](?![1-7])){1,20}$
规则说明
两种方案都覆盖了你要求的所有校验规则:
- 字符串长度为1到20位
- 仅允许包含小写字母a-g、数字1-7
- 不存在相邻的数字
方案1逐段解析
^匹配字符串的起始位置(?!.*[1-7]{2})负向先行断言,全局校验整个字符串中不存在两个连续的1-7数字[a-g1-7]{1,20}匹配1到20个符合字符范围要求的内容$匹配字符串的结束位置
方案2逐段解析
- 每一位字符只能是两种情况:
- 小写字母a-g
- 数字1-7,且该数字后面没有跟着其他1-7的数字
- 整体限制匹配长度为1到20位
验证效果
- 合法示例
aabbca1a6、4gg1g2g1、1都可以正常匹配 - 非法示例
aabbca16a因为存在连续数字,会被直接拦截
内容的提问来源于stack exchange,提问作者Jane Doe
相关产品推荐
相关产品推荐

