要检查的正则表达式数值字段没有 /或具有所有相同的数字
Regular Expression to Check numeric field doesn't have /or have all same digits
我必须验证一个字段。该字段应为数字,不应包含所有相同的数字(如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));
}
返回false
但问题是,对于
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
.基本上数字应该至少有两位unique
数字
将匹配没有 2 个唯一数字的全数字字符串的正则表达式是
/^('d)(?:'1+)?$/
请参阅正则表达式演示。
解释:
-
^
- 字符串的开头 -
('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";
您可以使用
此模式(使用 matches
方法,该方法将模式隐式锚定在两侧(:
('d)'1*+'d+
(不要忘记转义字符串中的反斜杠(
主要思想是使用所有格量词(*+
(来禁止反向引用量词的回溯。由于此量词不能用于回溯,因此以下数字只能不同。
如果要允许个位数字符串,可以将第二部分设置为可选:
('d)(?:'1*+'d+)?
或者您可以添加替代:
('d)'1*+'d+|'d
如果你想检查字符串的长度,(你显然可以用同样的正则表达式来做(使用 string.length()
方法。
相关文章:
- 正则表达式与数字中的第二个点匹配
- 正好包含2个大写字母和3个数字的正则表达式
- 键按下上的正则表达式 仅限制数字
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 为什么这个正则表达式不't匹配最后一个字母数字字符
- 正则表达式(JavaScript),用于创建数字必须大于x的数据验证
- 用于删除紧跟在非数字后面的零的正则表达式
- XXXXXX的正则表达式.XX格式的数字
- 将字符串拆分为数值和非数字正则表达式
- 将分数替换为分数正则表达式,将数字替换为数字正则表达式
- Javascript字母数字正则表达式不采用换行符
- Javascript仅输入数字正则表达式
- 数字正则表达式导致jshint'错误或不必要的转义'错误
- 字母数字正则表达式javascript
- JavaScript:查找匹配的数字正则表达式
- Javascript数字正则表达式测试失败-无法找出原因
- 欧洲数字正则表达式
- 如何在数字正则表达式中允许空格
- Javascript:如何检查字符串中是否存在两个数字?(正则表达式)
- 匹配字符串部分并检索非邻近数字正则表达式