Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式前2个字符,字母或数字,但不是两者的组合_Php_Regex - Fatal编程技术网

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

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兼容,请执

我需要一个PHP正则表达式来验证字符串,如:“AB345678”或“12345678”。也就是说,包含前两个字母(字母或数字,但不是两者的组合)的八(8)个字母字符串,然后是剩余的6个字母数字。 我试着自己做,但没用

这是我的密码:

/^[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
    代表任意数字

这不能满足OP的愿望。他只想要最后六个字符的数字。您不需要对此进行查找,他不需要从匹配中排除前缀。@所有人都编辑了ans。我建议使用非捕获组,因为您不需要查看捕获组的结果
(?:[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";
}