正则表达式前2个字符或者字母或数字,但不是两者的组合
问题描述:
我需要PHP中的正则表达式来验证字符串,如“AB345678”或“12345678”。也就是说,八(8)个字母串包含前两个字母作为字母或数字,但不是两者的组合,然后是剩余的6个数字字母。 我试图用我自己的方式做,但它不工作。正则表达式前2个字符或者字母或数字,但不是两者的组合
这里是我的代码:
/^[0-9a-zA-Z]{2}[0-9]{6}$/
我是新来的正则表达式,因此需要在这里帮助。
在此先感谢。
答
使用|
(又名交替操作或管道运营商)说 '无论是左侧还是右侧':
/^([0-9]{2}|[a-zA-Z]{2})[0-9]{6}$/
答
/^ \d{8} | (?: [a-zA-Z]{2} \d{6}) $ /x
+1
格式化您的代码!请在你的答案上展开,代码只是答案不理想。 – 2013-04-18 07:19:45
答
为了与Unicode兼容:
^(?:\pL{2}|\pN{2})\pN{6}$
用PHP:
if (preg_match('/^(?:\pL{2}|\pN{2})\pN{6}$/u', $string)) {
echo "OK";
}
-
\pL
代表任何字母。 -
\pN
代表任何数字。
+0
number =/=数字 – hakre 2013-04-18 07:41:30
Hi Patata, 感谢您的快速回复。 你的解决方案像魅力一样工作。 :) – 2013-04-18 07:00:42
我建议使用非捕获组,因为您不需要捕获组的结果。 '(:[0-9] {2} | [A-ZA-Z] {2}?)'。 – 2013-04-18 07:18:16