需要一个简单的preg_match()模式


Need a simple preg_match() pattern PHP

到目前为止,在PHP中对我来说最难的事情是preg_match()模式。我传递一个id变量,它以"n"字母或"q"字母开头,后面有数字。例如

$id = $_POST['id'];
echo $id;
output: n123

现在,我需要不同的功能,当某个字母在id数字前运行。我如何用preg_match()实现这一点?我已经开始做某事了…

$n_pattern = '/n[^0-9]/';
$q_pattern = '/q[^0-9]/';

但我甚至没有尝试过,因为我确定这是不正确的:)顺便说一句,id的数值介于1和6 int之间,所以我需要将它们全部匹配起来。(不知道我说的对不对……假设id可以是1到999999之间的任何数字)。

您应该为您的匹配使用以下正则表达式:

/^[qn]'d{1,6}$/

这意味着你的输入可以以字母q或n开头,后面跟着1到6个数字。

另一个简单的解决方案是仅检测第一个字符并验证第二部分是否为数字/整数;

$type = $id{0}; // first character of the id (n, q)
$number = (int) substr($id, 1); // rest of the id

要验证'type'是否正确,您可以使用;

if (!in_array($type, array('n', 'q')) {
    // invalid type
}