javascript - 用于检查数字字段不具有/或具有所有相同数字的正则表达式

标签 javascript jquery asp.net regex

我必须验证一个字段。该字段应该是数字,不应包含所有相同的数字(例如 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/

相关文章:

javascript - 突出显示旁边的 td 或 tr

jQuery 根据组合框选择将项目从一个列表移动到另一个列表

c# - CS0115 : 'ASP.default_aspx.GetTypeHashCode()' : no suitable method found to override

javascript - 针对不同浏览器的 Javascript 代码的持续集成/测试

javascript - 检查 XHR 和进度事件的浏览器功能

jquery - jquery 移动标题按钮上没有样式

c# - 如何在客户端计算机上将 XBAP 更新到最新版本?

asp.net - HTML <td> 标签的样式属性不符合宽度设置

javascript - AngularJS 删除操作后更新 View

Javascript JSON.stringify 不能正确处理原型(prototype)?