正規表示式 斷言

2022-06-10 13:12:12 字數 639 閱讀 1941

密碼的正規表示式,要求是密碼8-16位,必須包含數字大小寫字母以及特殊字元(~_@#$%&*^.!)

高人寫的:$pwd_pattern = '/^(?=.*?[a-z])(?=.*?[a-z])(?=.*?[\.\!\~\_@#$%&*^])[a-za-z0-9\.\!\~_@#$%&*^]$/'; 

經過學習,分析如下:

(?=.*?[a-z]) 斷言,只匹配乙個位置

比如,你想匹配乙個「人」字,但是你只想匹配中國人的人字,不想匹配法國人的人,就可以用: (?=中國)人

(?=.*[a-z])\d+  匹配以「任意字元連著乙個小寫字母」開頭的數字,只匹配數字

(?=.*?[a-z])\d+  匹配以「任意乙個字元連著乙個小寫字母」開頭的數字,只匹配數字    

斷言就是指明某個字串前邊或者後邊,將會出現滿足某種規律的字串。

/^[a-za-z0-9\.\!\~_@#$%&*^]$/      12345678     qqqqqqqq  123!@#wq都匹配   不滿足要求

/^(?=.*?[a-z])(?=.*?[a-z])(?=.*?[\.\!\~\_@#$%&*^])[a-za-z0-9\.\!\~_@#$%&*^]$/     123!@#wq匹配   12345678     qqqqqqqq 不匹配

正規表示式之斷言

零寬斷言的意思是 匹配寬度為零,滿足一定的條件 斷言 我也不知道這個詞語是那個王八蛋發明的,簡直是太拗口了。零寬斷言用於查詢在某些內容 但並不包括這些內容 之前或之後的東西,也就是說它們像 b,那樣用於指定乙個位置,這個位置應該滿足一定的條件 即斷言 因此它們也被稱為零寬斷言。斷言用來宣告乙個應該為...

正規表示式之斷言

exp 零寬度正先行斷言 零寬度正先行斷言為例 先行 表示待校驗的位置在前,即校驗的位置在exp匹配的內容之前 d 表示校驗的位置後面是三個數字 d 表示校驗的位置後接著的是數字 表示校驗的位置後字串長度為5,因為加了字串開頭和結尾的元符號,所以這個表示式作用其實就是匹配長度為5的字串。由上面例子可...

正規表示式 零寬斷言

零寬斷言的意思是 匹配寬度為零,滿足一定的條件 斷言 零寬斷言用於查詢在某些內容 但並不包括這些內容 之前或之後的東西,也就是說它們像 b 這樣的錨定作用,用於指定乙個位置,這個位置應該滿足一定的條件 即斷言 因此它們也被稱為零寬斷言。斷言用來宣告乙個應該為真的事實。正規表示式中只有當斷言為真時才會...