密碼的正規表示式,要求是密碼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 這樣的錨定作用,用於指定乙個位置,這個位置應該滿足一定的條件 即斷言 因此它們也被稱為零寬斷言。斷言用來宣告乙個應該為真的事實。正規表示式中只有當斷言為真時才會...