簡體   English   中英

不允許正則表達式 大寫字母后跟小寫字母后跟數字后跟特殊字符

[英]Regex not allowed Capital letter followed by lower case letters followed by number followed by special character

正則表達式需要匹配以下格式

  1. 至少 1 個大寫字母
  2. 最少 1 個小寫字母
  3. 最少 1 個數字案例
  4. 最少 1 個特殊字符

不允許連續超過兩個相同的字符

但是我們不想遵循下面的特定 Patten(首字母大寫,后跟數字,后跟特殊字符-(例如,Fall2015!))表示大寫后跟小寫后跟數字后跟特殊字符

(?=.{8,24}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[_.!@$*=-?#])(([A-Za-z0-9_.!@$*=-?#])\2?(?!\2))

看起來以下應該勾選您的框:

^(?![A-Z][a-z]+\d+[.!@$*=?#-]$|.*(.)\1\1)(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[.!@$*=?#-]).{8,24}$

查看在線演示

  • ^ - 開始字符串錨。
  • (?! - 對以下內容的負面預測:
    • [AZ][az]+\d+[.?@$*=?#-]$ - 你想要取反的文字模式:一個大寫字母、1+ 個小寫字母、1+ 個數字和字符串結束前的特殊字符.
    • | - 或者:
    • .*(.)\1\1 - 斷言 position 沒有以下三個相同字符的序列:0+ 個字符、第一個捕獲組和對該組的兩個直接反向引用。
    • ) - 關閉負前瞻。
  • (?=.*[AZ]) - 在字符串中斷言大寫字母的正向前瞻。
  • (?=.*[az]) - 在字符串中斷言小寫字母的正向前瞻。
  • (?=.*\d) - 在字符串中斷言數字的正向前瞻。
  • (?=.*[.?@$*=?#-]) - 正向預測以斷言字符串中的特殊字符。
  • .{8,24} - 除換行符以外的任何 8-24 個字符。
  • $ - 結束字符串錨。

嘗試這個:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_.!@$*=?#-])(?!.*(.)\1\1)(?!.*[A-Z][a-z]+\d+[_.!@$*=?#-])[\w.!@$*=?#-]{8,24}$

主要變化是:

  • ^錨定表達式開始
  • (?..*(.)\1\1)防止三倍字符
  • (?..*[AZ][az]+\d+[_?!@$*=?#-])以防止像“Fall2015!”這樣的輸入
  • [\w.?@$*=,#-]{8,24}$將輸入限制為僅這些字符且僅 8-24 長度
  • 將連字符移動到字符 class 的末尾,因此它是文字連字符(不是范圍)

還要注意引入\d作為[0-9]的簡寫和\w作為[a-zA-Z0-9_]簡寫。

暫無
暫無

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

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