一个正则表达式拒绝所有相同的输入数字?

时间:2016-12-20 17:20:37

标签: javascript regex input

我有一个输入,用户填写并发送。我想在JavaScript中创建一个验证,以防止用户输入类似的内容:

1111111111

2222222222

3333333333

<input type="text" class="form-control" id="inputID" placeholder="Company nummer" name="CompanyNumber" onchanged="checkInputDigits()" maxlength="13" pattern=".{13,}" required title="most be 13 digits"/>
 <script>
     function checkInputDigits()
        {
          //What to do?
        }
</script>

我可以在checkInputDigits函数中使用什么正则表达式来检查此无效输入?

2 个答案:

答案 0 :(得分:2)

像这样的简单正则表达式可以解决这个问题:

/^(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)$/

它只匹配只有1位数的字符串。

示例(带单元测试):

var units = [
  '111111111', // false
  '222222222', // false
  '333333333', // false
  '123456789'  // true
];
var regex = /^(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)$/;

units.forEach(function(unit) {
  var valid = !regex.test(unit);
  console.log(unit, valid);
});

要使用现有HTML,您只需将this传递给您的函数,然后将onchanged更改为onchange

工作示例:

function checkInputDigits(field)
{
    if (/^(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)$/.test(field.value)) {
        alert('You ID number looks fake.');
    }
}
<input type="text" class="form-control" id="inputID" placeholder="Company nummer" name="CompanyNumber" onchange="checkInputDigits(this)" maxlength="13" pattern=".{13,}" required title="most be 13 digits"/>

Regex Explained

graph

答案 1 :(得分:0)

如果数字全部相同则返回true。

Expires