我必须验证一个字段。该字段应该是数字,不应包含所有相同的数字(例如 555555、111111)。我需要一个正则表达式来检查这一点。我需要知道如何检查它是否包含所有相同的数字。
尝试了一些解决方案,例如以下但没有奏效
这三个没用
var reg_exp = new RegExp('/^([0-9a-z])\1+$/gm');
var reg_exp = new RegExp('/^(\d)\1*$/');
var reg_exp = new RegExp('([0-9])\\1{5}');
这个部分可以工作,因为它在这里修复了特定的数字位数,例如示例中的 {6} 为特定数字,但我需要一个解决方案,以便我可以将其应用于任意数量的数字
<!DOCTYPE html>
<html>
<body>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction() {
var str = "111111112";
var reg_exp = new RegExp('([0-9]){6}');
alert(reg_exp.test(str));
}
</script>
</body>
</html>
基于http://stackoverflow.com/users/3832970/wiktor-stribi%C5%BCew尝试了这个,它适用于长度超过 2 的字符串
function myFunction() {
var str = "222";
var reg_exp = /^(\d)\1+$/; // new RegExp('([0-9]){6}');
alert(reg_exp.test(str));
}
返回true
和
function myFunction() {
var str = "221";
var reg_exp = /^(\d)\1+$/; // new RegExp('([0-9]){6}');
alert(reg_exp.test(str));
}
返回假
但问题是
function myFunction() {
var str = "22";
var reg_exp = /^(\d)\1+$/; // new RegExp('([0-9]){6}');
alert(reg_exp.test(str));
}
或
function myFunction() {
var str = "11";
var reg_exp = /^(\d)\1+$/; // new RegExp('([0-9]){6}');
alert(reg_exp.test(str));
}
它返回false
我需要一个也可以用于一位数字的正则表达式。并且 var str = "1";
或 var str = "22";
应返回 true
。基本上,数字应该至少有两个唯一
数字
最佳答案
匹配没有 2 个唯一数字的全数字字符串的正则表达式是
/^(\d)(?:\1+)?$/
请参阅regex demo .
说明:
^
- 字符串开头(\d)
- 第 1 组捕获单个数字(字符串中的第一个数字)(?:\1+)?
- 可选(如?
匹配一次或零次出现)非捕获组,与捕获的相同数字匹配第 1 组$
- 字符串结尾。
在 JS 中:
document.body.innerHTML = "22: " + /^(\d)(?:\1+)?$/.test("22") + " as there are no unique digits, 2-digit string";
document.body.innerHTML += "<br/>12: " + /^(\d)(?:\1+)?$/.test("12") + " as there are 2 unique digits";
document.body.innerHTML += "<br/>1: " + /^(\d)(?:\1+)?$/.test("1") + " as there is just 1 digit, no 2 unique digits";
document.body.innerHTML += "<br/>-------- OR, with negation ----------";//or
document.body.innerHTML += "<br/>22: " + !/^(\d)(?:\1+)?$/.test("22") + " as there are no unique digits, 2-digit string";
document.body.innerHTML += "<br/>12: " + !/^(\d)(?:\1+)?$/.test("12") + " as there are 2 unique digits";
document.body.innerHTML += "<br/>1: " + !/^(\d)(?:\1+)?$/.test("1") + " as there is just 1 digit, no 2 unique digits";
关于javascript - 用于检查数字字段不具有/或具有所有相同数字的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36704223/