簡體   English   中英

如何根據以下約束獲取正則表達式

[英]How to get a regular expression based on the following constraints

我需要幫助來根據以下創建密碼的約束來創建正則表達式。 [這是一個課程作業]
注意:我不能使用擴展正則表達式。 我需要使用核心正則表達式,即 { | , * , () }

  1. 它應該以數字或英文字母開頭。
  2. 至少應有一個小寫字母、一個大寫字母和一個數字。
  3. 應該至少有一個來自 {@,$,#,%,&} 的特殊字符。
  4. 任何 3 個或更多數字的序列不應是同一數字的重復。

這是我到目前為止的工作: \\

A = { English letters **union** Digits } \
B = { Lowercase letters **union** Digits } \
C = { Uppercase letters **union** Digits } \
D = { Special characters } \

Regex = A(A)* ( B(B)* C(C)* D(D)* )

我可以想出一種方法來解決除最后一個之外的所有要求:

A = { English letters **union** Digits } 
B = { Lowercase letters } 
C = { Uppercase letters } 
D = { Digits }
E = { Special characters }
F = { Union of all allowed characters }

然后你需要拼出所有可能的排列:

A (BB* CC* DD* EE* | BB* CC* EE* DD* | BB* DD* CC* EE* | BB* DD* EE* CC* | ...) F*

但是如果你想添加“不超過三個相同數字”的規則,我看不出有辦法把所有這些可能性都拼出來(並且對每個排列都做 24 次),這就很清楚為什么會這樣了不是你想用“核心正則表達式”做的事情......

暫無
暫無

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

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