这应该可以做到:
^(?:[A-Z2-7]{8})*(?:[A-Z2-7]{2}={6}|[A-Z2-7]{4}={4}|[A-Z2-7]{5}={3}|[A-Z2-7]{7}=)?$
Run Code Online (Sandbox Code Playgroud)
该(?:[A-Z2-7]{8})*部件处理 40 位序列。第二部分处理规范指定的最终字节。请注意,此模式也接受空字符串(0 字节)。
在 PHP 中,将其与以下命令一起使用preg_match:
$isMatch = preg_match('#^(?:[A-Z2-7]{8})*(?:[A-Z2-7]{2}={6}|[A-Z2-7]{4}={4}|[A-Z2-7]{5}={3}|[A-Z2-7]{7}=)?$#', $input);
Run Code Online (Sandbox Code Playgroud)