重复字符或增量字符的前缀匹配
我正在使用preg Match验证密码为:
(preg_match("/^.*(?=.{5,}).*$/", $password)
也接受特殊字符。
但由于某些原因,我需要修改它以接受
- 仅字母数字
- 至少5个字符长度
- 并且非常重要的是,它不能有任何重复的或 递增字符,如:aaaa或12345或abc123等
。
解决方案
if (preg_match(
'%^ # Start of string
(?!.*(.)1) # Assert no repeated characters
# Assert no sequential digits/characters
(?!.*(?:01|12|23|34|45|56|67|78|89|90|
ab|bc|cd|de|ef|fg|gh|hi|ij|jk|
kl|lm|mn|no|op|pq|qr|rs|st|tu|
uv|vw|wx|xy|yz))
[a-z0-9]{5,} # Match at least five alnum characters
$ # End of string%ix',
$password)) {
# Successful match
}
相关文章