正则表达式前2个字符,可以是字母或数字,但不能是两者的组合


Regular Expression first 2 characters either alphabetic or numeric but not combination of both

我需要一个PHP正则表达式来验证字符串,如:"AB345678"或"12345678"。即8个字母字符串,其中前2个字母为字母或数字,但不是两者的组合,其余6个字母为数字。我试着自己做这件事,但行不通。

下面是我的代码:
/^[0-9a-zA-Z]{2}[0-9]{6}$/

我是Regex的新手,因此需要帮助。

你可以这样做

^([a-zA-Z]{2}|'d{2})'d{6}$

使用|(又名交替操作符或管道操作符)表示"左侧或右侧":

/^([0-9]{2}|[a-zA-Z]{2})[0-9]{6}$/

/^ 'd{8} | (?: [a-zA-Z]{2} 'd{6} ) $ /x

为了与unicode兼容:

^(?:'pL{2}|'pN{2})'pN{6}$
与php:

if (preg_match('/^(?:'pL{2}|'pN{2})'pN{6}$/u', $string)) {
    echo "OK";
}
  • 'pL代表任意字母
  • 'pN表示任意数字。