大家,
所以我正在学习正则表达式 :-) 耶
我正在学习如何解析至少必须有 1 个大写字母和 1 个数字的密码字符串,并且长度可以在 6 到 12 个字符之间。
我很难理解这一点。
$array = array("Hallo1ween23");
$match = preg_grep('%^(?=[-_a-zA-Z0-9]*?[A-Z])(?=[-_a-zA-Z0-9]*?[a-z])(?=[-_a-zA-Z0-9]*?[0-9])\S{6,12}$%',$array);
foreach($match as $value) {
echo "<pre>" .$value . "<br>";
}
所以基本上我了解这些部分:
我所知道的例子:
此行%(?<=mail)man%
查找以 开头mail
和结尾的单词man
好的,所以..(?=[a-z]*?[A-Z])
一个简单的版本,但仍然是同样的逻辑。我不明白。
因此,如果有帮助,我将整个阵容分成 3 组。
接下来的两个我不明白。
(?=[-_a-zA-Z0-9]*?[A-Z])
(?=[-_a-zA-Z0-9]*?[a-z])
我知道 \s 表示空白,而 \s 表示非空白,但我并不真正理解它的目的。
(?=[-_a-zA-Z0-9]*?[0-9])\S
这是接受的最小和最大字母。
{6,12}
一些解释会很整洁。
提前致谢 :-)
@塔法里
基本上就是这条线。
(?=[-_a-zA-Z0-9]*?[A-Z])
而\S
在整个正则表达式行的末尾。
我明白[-_a-zA-Z0-9]
* 表示零个或多个
? 意味着我们不确定它是否存在
把它放在一起我松了那个。