[英]Javascript regular expression for “at least X characters, have a capital letter and a number”
[英]Need this regular expression not to require at least 1 capital letter
現在編寫下面的正則表達式以要求使用大寫字母。 有人告訴我,大寫字母是可選的,但不是必需的。 如何在不更改任何其他參數的情況下編寫此正則表達式,以使至少不需要一個大寫字母。
/^(?:(?!([a-zA-Z0-9-().&@?""#,+''\s\/])\1\1)[a-zA-Z0-9-().&@?""#,+''\s\/]){7,}$/
該正則表達式已經不需要大寫字符了。 它堅持的唯一“有趣”的事情是字符串不能以相同的事物重復3次(即相同的字符)開頭,並且整個字符串至少需要七個字符長。
同樣,不需要在正則表達式中將單引號和雙引號字符加倍。
該正則表達式中沒有要求大寫字母的內容。 該正則表達式施加的要求是:
-().&@?"#,+'
,空格或/
。 如果我沒記錯的話,這似乎用於密碼驗證。 由於多種原因,這是對正則表達式的不良使用。
很難讀。 正則表達式究竟檢查什么? 這么大的字符混亂實際上是做什么的? 如果您不是正則表達式專家,那簡直就是胡言亂語。
一個大的正則表達式中塞滿了幾個要求。 如果將檢查分成幾行代碼,將更易於閱讀和維護。
if (password.length < 7) reject("Too short."); if (numRepeatedCharacters(password) >= 3) reject("Too repetitive."); if (numDigits(password) < 1) reject("Digit required."); if (numSymbols(password) < 1) reject("Symbol required."); // etc.
它包含一個字符白名單而不是黑名單。 請不要將字符列入白名單。 沒有理由阻止用戶使用您從未想到的字符。 如果他們想使用星號,百分號,帶重音的字母等怎么辦? 您將出於安全原因拒絕這些字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.