我需要在PHP中使用正则表达式来验证字符串,如:“AB345678”或“12345678”。也就是说,八(8)个字母字符串包含前2个字母作为字母或数字,但不是两者的组合,然后剩下的6个字母数字。 我试图通过自己的方式做到这一点,但它没有用。
这是我的代码:
/^[0-9a-zA-Z]{2}[0-9]{6}$/
我是Regex的新手,因此需要帮助。
提前致谢。
答案 0 :(得分:4)
你可以这样做
^([a-zA-Z]{2}|\d{2})\d{6}$
答案 1 :(得分:2)
使用|
(也称为轮换操作员或管道操作员)来说出左侧或右侧':
/^([0-9]{2}|[a-zA-Z]{2})[0-9]{6}$/
答案 2 :(得分:0)
/^ \d{8} | (?: [a-zA-Z]{2} \d{6} ) $ /x
答案 3 :(得分:0)
为了兼容unicode:
^(?:\pL{2}|\pN{2})\pN{6}$
用php:
if (preg_match('/^(?:\pL{2}|\pN{2})\pN{6}$/u', $string)) {
echo "OK";
}
\pL
代表任何字母。\pN
代表任何数字。