PHP预订引用验证不起作用

PHP预订引用验证不起作用,php,regex,Php,Regex,要使引用有效,三个字母组必须是'ACT'、'ABQ'、'BDE'中的一个。其他任何内容都无效 下面是我的代码,但它似乎没有按预期工作。谁能给我指一下正确的方向吗。谢谢 if (isset($webdata['bookingreference'] )) { if (!preg_match("[ABQ,ACT,BDE]{1}[-]{1}[1-2]{1}[0-9]{3}", $webdata['bookingreference'])) { $formerror['booking

要使引用有效,三个字母组必须是'ACT'、'ABQ'、'BDE'中的一个。其他任何内容都无效

下面是我的代码,但它似乎没有按预期工作。谁能给我指一下正确的方向吗。谢谢

if (isset($webdata['bookingreference'] )) {
    if (!preg_match("[ABQ,ACT,BDE]{1}[-]{1}[1-2]{1}[0-9]{3}", $webdata['bookingreference'])) {
        $formerror['bookingreference'] = '<span class="warn" >Not valid on server: The ref must start with ABQ, ACT or BDE, followed by a hyphen, then either the numbers 1 or 2 followed by two more numbers 0-9';
        $valid = FALSE;
if(isset($webdata['bookingreference'])){
如果(!preg_match(“[ABQ,ACT,BDE]{1}[-]{1}[1-2]{1}[0-9]{3}”,$webdata['bookingreference'])){
$formerror['bookingreference']='在服务器上无效:ref必须以ABQ、ACT或BDE开头,后跟连字符,然后数字1或2后跟两个以上的数字0-9';
$valid=FALSE;
它应该是:

    if (!preg_match("(ABQ|ACT|BDE)-[1-2][0-9]{3}", $webdata['bookingreference'])) {
要组成一个组,请将其放入字符集的
()
,而不是
[]
。可选项用
|
,而不是
分隔


无需将
-
放入
[]
中以进行字面匹配。也无需使用
{1}
量词,因为这是默认值。

这里没有SQL。它以什么方式不起作用?发生了什么事?
$webdata['bookingreference'的值是什么
?对不起,php!我在读东西和输入东西,但写错了东西。你需要阅读正则表达式教程。你不明白
[ABQ,ACT,BDE]
的意思。另外,
preg\u match()
要求您在regexp周围放置分隔符。它应该只允许这3个字母组合中的任何一个,后面是连字符,然后是1或2,然后是任意3个数字。表单允许我输入的任何组合,并且还不断回显错误消息。非常感谢!