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。
我试图确保当用户注册时他们使用特定的字符系列。在我的例子中,我希望他们输入类似 "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。