PHP - 为什么我的preg_match不起作用?

时间:2015-05-24 15:26:44

标签: php regex preg-match

我正在努力确保当用户注册时他们使用特定的一系列字符。在我的情况下,我希望他们输入类似“d1111111”的东西,所以我希望它总共是8个字符,并以字母d小写或大写开头,以允许其他7个字符为0到9之间的数字。感谢,谢谢。

这是我目前的代码

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

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

2 个答案:

答案 0 :(得分:5)

使用例如

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

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

character class […]字符匹配,[dD]因此与字母d {{匹配1}}。

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

i匹配任何数字,与\d相同。 [0-9]表示要匹配的位数。

您需要{7}^以确保正则表达式与整个用户名匹配。

特别是PHP,请参阅PHP's PCRE docs

答案 1 :(得分:1)

你的正则表达式错了。首先,不需要字符类来捕获d。只需一个文字d以及字符串开头^

现在我们希望剩余的 7 字母为数字。所以它将跟随字符串结尾$

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