检查给定5位数字中的所有5位数是否相同

时间:2015-01-22 17:40:29

标签: javascript angularjs

如果给定的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");      
          }
      }
});

6 个答案:

答案 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");      
          }
      }
});

小提琴: - http://jsfiddle.net/95ydag0b/