为什么这个正则表达式没有';t验证


Why this regular expression doesn't validate

我正在为检查字符串构建一个正则表达式,如G20003030G-0003030。第一个字母可以是以下任意一个:VGJ。这是我的代码:

$string = "G20003030";
if (preg_match('^[VGJ]{1,1}?[0-9]{8,8}$/', $string)) {
    echo "passed";
} else {
    echo "not passed";
}

但它总是返回"未通过"。我的正则表达式出了什么问题,如何检查这两个变体?(我认为我的代码只适用于第一个)

警告preg_match():在第3行的/code/xxxxxxx.php中找不到结束分隔符'^'

您忘记了第一个斜线和连字符(感谢@Sepster)。

/^[VGJ]-?[0-9]{8}$/

尝试使用此正则表达式:

/^[VGJ]-?[0-9]{8}$/