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

时间:2013-04-18 06:51:29

标签: php regex

我需要在PHP中使用正则表达式来验证字符串,如:“AB345678”或“12345678”。也就是说,八(8)个字母字符串包含前2个字母作为字母或数字,但不是两者的组合,然后剩下的6个字母数字。 我试图通过自己的方式做到这一点,但它没有用。

这是我的代码:

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

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

提前致谢。

4 个答案:

答案 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代表任何数字。