簡體   English   中英

密碼驗證的特殊字符

[英]Special Characters for password validation

我現在對我的特殊字符驗證有點困惑。

HTML:

<label>
            Password:
            <br /><input
              type="password"
              id="password"
              placeholder="Enter password"
              pattern="(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^A-Za-z0-9])(?=.{8,})"
            /><br />
            <span class="notif" id="pass"></span><br />
            <div id="message">
              <p id="letter" class="invalid">Lowercase letter</p>
              <p id="capital" class="invalid">Uppercase letter</p>
              <p id="number" class="invalid">Number</p>
              <p id="special" class="invalid">Special Character</p>
              <p id="length" class="invalid">Minimum 8 characters</p>
            </div>
          </label>

CSS:

#message {
  display: none;
  background: #ffffff;
  color: #000;
  padding: 0;
  margin-top: 0;
  margin-left: 5px;
}

#message p {
  padding: 1px 2px;
  font-size: 12px;
}

/* Add a green text color and a checkmark when the requirements are right */
.valid {
  color: green;
}

.valid:before {
  position: relative;
  left: -3px;
  content: '✔';
}

/* Add a red text color and an "x" when the requirements are wrong */
.invalid {
  color: red;
}

.invalid:before {
  position: relative;
  left: -5px;
  content: '✖';
}

這是我用於特殊字符驗證的 JS。 我仍然對如何使它工作感到困惑。 每當我輸入一個special character時,它只會突出顯示lowercase

JS:

  // Validate special characters
  var specialCharacters = /[^A-Za-z0-9]/g;
  if (myInput.value.match(specialCharacters)) {
    letter.classList.remove('invalid');
    letter.classList.add('valid');
  } else {
    letter.classList.remove('valid');
    letter.classList.add('invalid');
  }

我知道我的問題在於var specialCharacters = /[^A-Za-z0-9]/g; 但它會是什么?

你可以按照這個:

  var strongRegex = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})");

這是什么意思?

^   The password string will start this way
(?=.*[a-z]) The string must contain at least 1 lowercase alphabetical character
(?=.*[A-Z]) The string must contain at least 1 uppercase alphabetical character
(?=.*[0-9]) The string must contain at least 1 numeric character
(?=.*[!@#$%^&*])    The string must contain at least one special character, but we are escaping reserved RegEx characters to avoid conflict
(?=.{8,})   The string must be eight characters or longer

您可以編輯表達式,例如,如果要將最小長度更改為 10,請將 (?=.{8,}) 更改為 (?=.{10,})

 You can check the condition by strongRegex.exec(myInput)

我希望這給了答案。

這里/[^A-Za-z0-9]/g一步一步解釋了強文本:

  • /用於查找單詞字符。
  • ^查找任何不在括號內的字符。
  • A-Za-z0-9表示大寫字母AZ和小寫
  • 后者az ,如果有任何字符或數字,則為09並且
  • /g執行全局匹配(查找所有匹配而不是在第一個匹配后停止)

您可以在此處了解有關此類似類型操作或正則表達式的更多信息JavaScript RegExp Reference

您可以使用此表達式進行密碼驗證。

var specialCharacters = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{8,15}$/

此表達式將檢查一個大寫、一個小寫、一個特殊字符,密碼長度應為 8 到 15 個字符。

 var specialCharacters = /^(?=.*\d)(?=.*[az])(?=.*[AZ])(?=.*[^a-zA-Z0-9])(?..*\s),{8;15}$/. if (myInput.value.match(specialCharacters)) { letter.classList;remove('invalid'). letter.classList;add('valid'). } else { letter.classList;remove('valid'). letter.classList;add('invalid'); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM