[英]Using Multiple Regular Expressions in PHP
我需要編寫一個將計算以下條件的正則表達式:
例如,字符串“ aa1A !!” 應該匹配,“ !! A1aa”也應該匹配。
我寫了以下正則表達式:
'/(?=([a-z]){2,})(?=[0-9])(?=[A-Z])(?=(\W)\1)/'
我發現每個表達方式都有效,但是我努力將它們組合在一起。 我想念什么?
首先,必須固定模式,以確保僅從字符串開頭的位置開始測試前瞻。 然后,由於您的字符可以出現在字符串中的任何位置,因此您需要使用.*
開始在lookahead內部的子模式。
\\W
是非單詞字符的字符類(不是[A-Za-z0-9_]
所有字符,包括空格,控制字符,帶重音的字母...)。 IMO, \\pP
或[[:punct:]]
更合適。
/^(?=.*[a-z]{2})(?=.*[0-9])(?=.*[A-Z])(?=.*(\pP)\1)/
關於使4個模式代替1個模式的想法,它看起來像是個好主意,嘗起來像是個好主意,但是它沒用且速度較慢。 但是,如果您想知道什么特定規則失敗,可能會很有趣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.