编写正则校验仅含数字与连字符的6位合规字符串方法咨询
6位含连字符字符串正则校验方案
满足全部校验规则的正则表达式如下:
^(\d)(?!(?:-*\1)+$)[0-9-]{4}\d$
匹配逻辑说明
- 长度与字符范围限制:正则固定匹配6位长度,所有允许出现的字符仅为数字(
\d等价于[0-9])和连字符,覆盖第一条校验规则。 - 首尾字符限制:正则开头用
(\d)强制匹配数字、结尾用\d$强制匹配数字,直接杜绝连字符出现在开头或结尾的情况,覆盖第二条校验规则。 - 数字非全相同限制:通过负向预查
(?!(?:-*\1)+$)实现:捕获开头第一个数字到分组1后,预查后续到字符串结尾的所有内容,如果内容仅由「任意数量连字符+分组1内的数字」重复组成,说明字符串内所有数字和第一个数字完全一致,直接判定校验不通过,覆盖第三条校验规则。
校验结果对照
1111-1:不允许,所有数字完全相同1111-2:允许,符合全部规则11112-:不允许,以连字符结尾-12345:不允许,以连字符开头111111:不允许,无连字符但所有数字完全相同1-2345:允许,首尾为数字、长度合规、数字不完全相同
内容的提问来源于stack exchange,提问作者Harinatha Reddy
相关产品推荐
相关产品推荐

