Php 正则表达式前2个字符,字母或数字,但不是两者的组合
我需要一个PHP正则表达式来验证字符串,如:“AB345678”或“12345678”。也就是说,包含前两个字母(字母或数字,但不是两者的组合)的八(8)个字母字符串,然后是剩余的6个字母数字。 我试着自己做,但没用 这是我的密码:Php 正则表达式前2个字符,字母或数字,但不是两者的组合,php,regex,Php,Regex,我需要一个PHP正则表达式来验证字符串,如:“AB345678”或“12345678”。也就是说,包含前两个字母(字母或数字,但不是两者的组合)的八(8)个字母字符串,然后是剩余的6个字母数字。 我试着自己做,但没用 这是我的密码: /^[0-9a-zA-Z]{2}[0-9]{6}$/ 我是新加入Regex的,所以这里需要帮助 提前感谢。使用|(又名交替操作符或管道操作符)说“左手边或右手边”: 你可以这样做 ^([a-zA-Z]{2}|\d{2})\d{6}$ 要与unicode兼容,请执
/^[0-9a-zA-Z]{2}[0-9]{6}$/
我是新加入Regex的,所以这里需要帮助
提前感谢。使用|
(又名交替操作符或管道操作符)说“左手边或右手边”:
你可以这样做
^([a-zA-Z]{2}|\d{2})\d{6}$
要与unicode兼容,请执行以下操作:
^(?:\pL{2}|\pN{2})\pN{6}$
使用php:
if (preg_match('/^(?:\pL{2}|\pN{2})\pN{6}$/u', $string)) {
echo "OK";
}
代表任何字母\pL
代表任意数字\pN
(?:[a-zA-Z]{2}\d{2})
@bmorris591:如果它是唯一的捕获组,它真的没有任何意义,他要么使用它,要么不使用。嗨,帕塔舒,谢谢你的快速回复。你的解决方案很有魅力。:)我建议使用非捕获组,因为您不需要查看捕获组的结果<代码>(?:[0-9]{2}|[a-zA-Z]{2})。格式化您的代码!请详述您的答案,仅代码答案并不理想。
if (preg_match('/^(?:\pL{2}|\pN{2})\pN{6}$/u', $string)) {
echo "OK";
}