簡體   English   中英

需要此正則表達式不需要至少1個大寫字母

[英]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次(即相同的字符)開頭,並且整個字符串至少需要七個字符長。

同樣,不需要在正則表達式中將單引號和雙引號字符加倍。

該正則表達式中沒有要求大寫字母的內容。 該正則表達式施加的要求是:

  • 至少7個字符長。
  • 僅包含大寫和小寫字母,數字0-9,符號-().&@?"#,+' ,空格或/
  • 不能以連續3個相同字符開頭。 (作者可能希望此檢查適用於整個密碼,但並非如此。)

如果我沒記錯的話,這似乎用於密碼驗證。 由於多種原因,這是對正則表達式的不良使用。

  1. 很難讀。 正則表達式究竟檢查什么? 這么大的字符混亂實際上是做什么的? 如果您不是正則表達式專家,那簡直就是胡言亂語。

  2. 一個大的正則表達式中塞滿了幾個要求。 如果將檢查分成幾行代碼,將更易於閱讀和維護。

     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. 
  3. 它包含一個字符白名單而不是黑名單。 請不要將字符列入白名單。 沒有理由阻止用戶使用您從未想到的字符。 如果他們想使用星號,百分號,帶重音的字母等怎么辦? 您將出於安全原因拒絕這些字符。

暫無
暫無

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

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