username不是密码的一部分,反之亦然javascript或jquery

时间:2017-10-13 05:05:00

标签: javascript jquery

密码不应包含用户名或超出两个连续字符的用户全名

如果用户名= 1Abcd234    密码= aBc15 然后它应该返回错误,如密码不能包含用户名的任何部分。

因为" abc1"密码和用户名都有。

2 个答案:

答案 0 :(得分:0)

我认为你可以使用这样的东西:



function FindIntersectionFromStart(a,b){
    for(var i=a.length;i>0;i--){
        d = a.substring(0,i);
        j = b.indexOf(d);
        if (j>=0){
            return ({position:j,length:i});
        }
    }

    return null;
}

function FindIntersection(a,b){
    var bestResult = null;
    for(var i=0;i<a.length-1;i++){
        var result = FindIntersectionFromStart(a.substring(i),b);
        if (result){
            if (!bestResult){
                bestResult = result;
            } else {
                if (result.length>bestResult.length){
                    bestResult = result;
                }
            }
        }
        if(bestResult && bestResult.length>=a.length-i)
            break;
    }
    return bestResult;
}

var username = "myUsername";
var password = "myuse";

result = FindIntersection(username.toLowerCase(), password.toLowerCase());

if(result.length > 2){
  console.log("Invalid Password!");
} else {
  console.log("Valid Password!")
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这是一个简单的方法(虽然可能不是最好的):

  1. 首先获取username中不应找到的password中连续字符的所有组合。这将取决于您的应用程序认为匹配时无效的连续字符数。
  2. 现在,运行一个简单的循环,并使用String.indexOf方法检查是否存在任何无效组合。
  3. 为了简单起见,请务必同时将usernamepassword转换为相同的案例。
  4. $("#check").on("click", checkValidity );
    
    function checkValidity(){
      var numConsecutiveChars = 2;
      var username = $("#username").val().trim().toLowerCase();
      var password = $("#password").val().trim().toLowerCase();
      
      // first find all combinations that should not be found in password
      var invalidCombinations = [];
      for( var i = 0; i < username.length - numConsecutiveChars; i++ ){
        var curCombination = username[i] + username[i+1];
        invalidCombinations.push( curCombination );
      }//for
      
      // now check all invalidCombinations
      var invalid = false;
      for( var i = 0; i < invalidCombinations.length; i++ ){
        var curCombination = invalidCombinations[i];
        if( password.indexOf( curCombination ) !== -1 ){
          invalid = true;
          break;
        }
      }//for()
      
      if( invalid ){
        alert("Invalid password");
      }else{
        alert("Valid password");
      }
    }//checkValidity()
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type="text" id="username" value="user" />
    <input type="text" id="password" value="pass" />
    <button id="check">Check validity</button>