PHP - 为什么我的 preg_match 不工作?

PHP - Why is my preg_match not working?

我试图确保当用户注册时他们使用特定的字符系列。在我的例子中,我希望他们输入类似 "d1111111" 的内容,所以我希望它总共有 8 个字符,并以字母 d 小写或大写开头,以允许其他 7 个字符为 0 到 9 之间的数字.感谢所有帮助,谢谢。

到目前为止,这是我的代码

$regex = '/[d][0-9]{8}/';

if(preg_match($regex, $username)){
    echo "Valid";
} else {
    echo "not a valid username";
}

你的正则表达式在这里是错误的。首先,不需要字符 class 来捕获 d。只是文字 d 字符串开头 锚点 ^.

现在我们希望剩下的 7 个字母是数字。所以它将跟在 字符串结尾 锚点 $

之后
$regex = '/^d\d{7}$/'

使用举例

$regex = '/^[dD][0-9]{7}$/';

$regex = '/^d\d{7}$/i';

A character class […] 匹配 单个 字符,因此 [dD] 匹配字母 d D

或者,您可以在表达式末尾使用 i 选项(也称为 修饰符 ),让您的正则表达式不区分大小写地匹配.也可以 change the mode inside the expression,但我个人从未使用过。

\d 匹配任何数字,与 [0-9] 相同。 {7}表示匹配多少位。

您需要 ^$ 来确保正则表达式匹配整个用户名。

对于 PHP,请参阅 PHP's PCRE docs