如果给定的5位数字中的所有5位数字都相同,我想显示警告,例如11111,22222等。这是我的小提琴http://jsfiddle.net/09k8f5s4/36/,下面是我的代码无效。任何帮助将不胜感激。
<div ng-app="app" ng-controller="test">
<input type="text" ng-model="value"/>
<button ng-click=check()>Check</button>
</div>
angular.module('app', [])
.controller('test', function($scope) {
$scope.check = function() {
if(/(\d)\1{2}-\1{3}-\1{4}/.test($scope.value)) {
alert("Invalid number");
}
}
});
答案 0 :(得分:2)
你暗示你知道正好有5个整数存在,所以我会测试mod11111。
答案 1 :(得分:1)
这是一个快速的香草版本(我对Angular并不熟悉):
var num = 44444;
var num2 = 44445;
function areSame(num) {
var arr = String(num).split('');
return arr.every(function (el) { return el === arr[0]; });
}
console.log(areSame(num));
console.log(areSame(num2));
答案 2 :(得分:1)
普通的JavaScript。假设number
是一个字符串:
function isAllSameDigit(number){
for(var i = 0; i < number.length; i++){
if(number[0] != number[i])
return false;
}
return true;
}
一旦发现差异,这将会短路。
答案 3 :(得分:0)
function check(input) {
// convert input to string
input += "";
// verify only 5 characters
if (input.length !== 5) {
throw new Error("Input is not 5 digits long.");
}
// verify it is numeric.
if (!$.isNumeric(input)) {
throw new Error("Input is not a numeric value.");
}
var allSame = true;
var firstChar = input[0];
// Loop through looking for something different
for (var i = 0; i < 5; i++) {
if (input[i] !== firstChar) {
allSame = false;
break;
}
}
return allSame;
}
答案 4 :(得分:0)
您可以使用以下正则表达式^([0-9])\1*$
angular.module('app', [])
.controller('test', function($scope) {
$scope.check = function() {
if(/^([0-9])\1*$/.test($scope.value)) {
alert("Invalid number");
}
}
});
请参阅jsfiddle
答案 5 :(得分:0)
嘿,你的regx不正确: -
使用: - / ^ \ D *(\ d)(?:\ D * | \ 1)* $ / .test($ scope.value)
angular.module('app', [])
.controller('test', function($scope) {
$scope.check = function() {
if(/^\D*(\d)(?:\D*|\1)*$/.test($scope.value)) {
alert("Invalid number");
}
}
});