正则表达式限制字符串不超过 5 个连续数字字符且总共不超过 8 个数字字符

Regex to restrict a string for no more than 5 consecutive numeric characters and no more than 8 numeric characters in total

我正在尝试构建一个正则表达式,限制一个字符串的连续数字字符不超过 5 个,并且数字字符总数不超过 8 个。

例如:

到目前为止,我能够创建这个: /^((\d{0,5}[a-zA-Z]+\d{0,5})+|\d{0,5})$/

非常感谢

带有一些交替的负面前瞻可能在这里有所帮助:

^(?!.*\d{6}|(?:.*\d){9})[A-Za-z\d]+$

网上看一个demo

  • ^ - 起点锚点。
  • (?! - 打开否定前瞻:
    • .*\d{6} - 除换行符外的 0+ 个字符后跟 6 位数字。
    • | - 或者:
    • (?:.*\d){9} - 除换行符外的 0+ 个字符的非捕获组后跟匹配 9 次的单个数字。
    • ) - 关闭否定前瞻。
  • [A-Za-z\d]+ - 匹配 1+ 个字母数字字符。
  • $ - 末尾锚点。