RegEx允许9个数字,但阻止任何超过4个重复的数字

Sea*_*n.L 3 javascript regex

我正在寻找帮助,找到一个RegEx,要求正好9个数字,但连续阻止任何超过4个重复的数字.如果输入多于或少于9个字符,则应该失败.

例子是:

  • 123456789 - 允许
  • 111156789 - 允许
  • 121314151 - 允许
  • 111116789 - 不允许
  • 123499999 - 不允许

我试过以下没有运气:

/^(?!.*(\d)\1{5})(\d{9})*$/
Run Code Online (Sandbox Code Playgroud)

ker*_*azi 6

阻止任何数字,连续5次重复:
/^(?:(\d)(?!\1{4})){9}$/

说明:

(\d) - 第一组,匹配任何数字.
\1 - 重复第一组内容.
(\d)(?!\1{4}) - 块数字,后面有4个相同的数字.
(?:(\d)(?!\1{4})){9} - 仅匹配此模式中的9个(每个仅包含一个数字)

例:

let reg = /^(?:(\d)(?!\1{4})){9}$/;

console.log(reg.test("123456789"));  // -> true
console.log(reg.test("111116789"));  // -> false
console.log(reg.test("12345678"));   // -> false
console.log(reg.test("1234567890")); // -> false
Run Code Online (Sandbox Code Playgroud)

  • 从问题`111156789 - 允许`,所以,尽管措辞不太明确,他们想连续_ = 4,但阻止5.所以你只需要一个`\ 1` (2认同)