2017-10-13 54 views
3

密碼不能包含用戶名或超過兩個連續的字符用戶名不是密碼的一部分,反之亦然JavaScript或jQuery的

如果用戶名= 1Abcd234 密碼= aBc15 那麼它應該返回用戶的全名的部分像密碼這樣的錯誤不能包含用戶名的任何部分。

因爲「abc1」存在於密碼和用戶名中。

+0

你嘗試過這麼遠嗎?請分享您的代碼。 –

+0

你有什麼想要做到這一點,請注意,StackOverflow不是一個編碼服務 –

+2

只需循環它並使用indexof – brk

回答

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!") 
 
}

+0

對不起,但如果我使用這個 var username =「myUsername」; var password =「myuse」; 它將返回有效的密碼。 –

+0

@NishuKashyap發生這種情況是因爲案例不同。通過添加'.toLowerCase()'你的例子的作品。 –

+0

對不起,但你沒有明白我的觀點。 如果myUsername和myuse都具有相同的字符串,即myuse,那麼如何返回有效的密碼。 –

0

這裏有一個簡單的方法(可能不是,雖然最好的):

  1. 首先得到的所有組合來自username的連續字符不應在password中找到。這取決於應用程序在匹配時認爲無效的連續字符數。
  2. 現在,運行一個簡單的循環,並使用String.indexOf方法檢查是否存在任何無效組合。
  3. 爲了簡單起見,請確保您將兩個 - usernamepassword轉換爲相同的大小寫。

$("#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>

+1

是的這段代碼也可以工作。非常感謝。 @mohit bhardwaj –

相關問題