我想做一个正则表达式来测试像这样的重复
0101010101
2323232323
1313131313
4848484848
这就是我目前所做的,但它不起作用
var noAlternateRepeatRegex = /^(?!.*\\d{2}\\d{2}|.*00|.*11|.*22)$/;
你能告诉我禁止两个交替数重复的正则表达式吗?
编辑以解决评论中的澄清要求。
我用JavaScript编写代码来验证输入字段中输入的电话号码。
它使用的是JavaScript正则表达式引擎。
这是我的职责。
function validatePhoneNumber() {
var telephoneValue = telephoneInput.val();
// Use a regular expression to check the 10-digit phone number
var regex = /^\d{10}$/;
// checks that the phone number does not contain a sequence of digits repeated more than 9 times, prohibiting the digits 0 to 9 from repeating more than 9 times.
var noRepeatRegex = /^(?!.*(0|1|2|3|4|5|6|7|8|9)\1{9})/;
// verifies that no sequence of two alternating digits is repeated more than 5 times in the telephone number.
var noAlternateRepeatRegex = /^(?!.*\\d{2}\\d{2}|.*00|.*11|.*22)$/;
if (!regex.test(telephoneValue) || !noRepeatRegex.test(telephoneValue) || !noAlternateRepeatRegex(telephoneValue)) {
// code
return;
}
// The phone number is valide
// code
}
我还没有收到任何具体的规则来这样做。我的客户要求我禁止以下号码。
0101010101
0123456789
0102030405
1111111111
2222222222
3333333333
我推断规则是必须禁止
- 所有的数字都是一样的,比如“111111111”。
- 数字按升序或降序连续,例如“0123456789”。
- 这些数字按顺序重复,如“0101010101”、“0102030405”等。
2条答案
按热度按时间8ljdwjyq1#
如果字符串匹配下面的正则表达式,则存在一对与下面的一对连续字符不同的连续字符,这意味着字符串不完全由重复的字符对组成。
Demo
我已经假定已知字符串完全由数字组成。
20jt8wwn2#
除非这是一个关于正则表达式的学术问题,或者绝对需要使用它们,否则我会选择一个命令式解决方案,因为解析是微不足道的。在这里,自定义实现可以更有效。这是用Java写的。
指纹