【发布时间】:2021-08-17 19:41:15
【问题描述】:
查看了另外 2 个与正则表达式相关的问题,这两个问题都远远超出了我在 X'D 方面需要的帮助。
<?php
$userName = trim($_POST['username']);
if(preg_match("/^[a-zA-Z].*(?(\d)).{8,}$/", $userName)){
echo 'woot!';
我不太确定它为什么会失败。我知道它检查第一个字符必须是 alpha,然后去更多 * 但最后检查它是否是一个数字?(\ d)...但是为什么不检查我的 $userName 的长度是否为 8 或更多?
如果我这样做
... *(?(\d){8,}
它会查找 8 位或更多位,而不是字符串本身是否为 8 位或更多位。
用户必须:以字母开头,只能以数字结尾,并且只能包含 alphaNumeric,必须至少为 8 个字符,并且大小写相同。也就是说我需要在我的正则表达式末尾添加一个 i。
因此,没有办法将其转换为正则表达式的形式,向前看? ^...$.{8,} 不行吗?
【问题讨论】:
-
请清楚地告诉我们用户名的规则是什么?很明显,它必须以字母开头,并且在稍后的某个时间点也有一个数字。其余的不清楚。
-
用户必须:以字母开头,只能以数字结尾,并且只能包含字母数字,必须至少为8个字符,并且大小写相同。也就是说我需要在我的正则表达式末尾添加一个 i。
标签: php regex validation preg-match