我正在寻找有关查找正则表达式的帮助,该正则表达式要求确切地包含9个数字,但连续阻止超过4个重复的数字。如果输入的字符少于或少于9个,则会失败。
示例为:
我没有运气尝试过以下内容:
/^(?!.*(\d)\1{5})(\d{9})*$/
答案 0 :(得分: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
答案 1 :(得分:0)
/(?=(?!(\d)\1{4}))^\d{9}$/
说明:
(\d)\1{4}
-5个相同数字的重复数字
(?!(\d)\1{4})
-不匹配5个相同的数字
(?=(?!(\d)\1{4}))
-确保表达式不包含相同数字的5位数字,然后返回原始起点以进行进一步匹配
^\d{9}$
-匹配一个总计9位数的表达式
答案 2 :(得分:0)
您可以使用此正则表达式,仅当任何数字重复至少5次时才拒绝匹配。
/^(?!\d*(\d)\1{4})\d{9}$/
说明:
^
->字符串开头(?!\d*(\d)\1{4})
->负向查找,如果字符串中的任何数字重复至少五次,则拒绝匹配。\d{9}
->精确匹配九个数字$
->字符串结尾这里是相同的javascript代码,
let regex = /^(?!\d*(\d)\1{4})\d{9}$/;
var strs = ["123456789","111156789","121314151","111116789","123499999","888888888","199999991","123327333"];
for (var i=0;i<strs.length;i++) {
console.log(strs[i] + " --> " + regex.test(strs[i]));
}