一直在寻找答案而没有取得明显的成功。
我使用preg_match对QR12345678的过帐值进行了后期数据检查。 QR可能会提交,也可能不会提交。我已经使用了下面的各种preg_match而没有运气。
preg_match('/^[A-Z]{1,3}[0-9]{4,10}$/', $_POST['some_id'])
preg_match('/^[A-Z]{1,3}?[0-9]{4,10}$/', $_POST['some_id'])
preg_match('/([A-Z]{1,3})?[0-9]{4,10}$/', $_POST['some_id'])
preg_match('/^([A-Z]{1,3})?[0-9]{4,10}$/', $_POST['some_id'])
preg_match('/[A-Z]{0,3}[0-9]{4,10}/', $_POST['some_id'])
preg_match('/([A-Z]{1,3})*[0-9]{4,10}$/', $_POST['some_id'])
在以下内联条件中使用preg_match
$some_id = isset($_POST['some_id'])
&& preg_match('/[A-Z]{1,3}*[0-9]{4,10}/', $_POST['some_id'])
? $_POST['some_id']
: 0;
因此,$some_id
无论如何都会返回0
。
答案 0 :(得分:1)
错误是您在代码中实际使用的模式:
> echo preg_match('/[A-Z]{1,3}*[0-9]{4,10}/',"QR12345678");
< PHP Warning: preg_match(): Compilation failed: nothing to repeat at offset 10 in php shell code on line 1
不起作用的部分是{1,3}*
,其中你有2个量词,而第二个(*
)不知道要重复什么。删除冗余的*
量词或使用其他建议的模式之一:
> echo preg_match('/[A-Z]{1,3}[0-9]{4,10}/',"QR12345678");
< 1
> echo preg_match('/^([A-Z]{1,3})?([0-9]{4,10})$/',"QR12345678");
< 1