Я хочу проверить код Base32 перед его преобразованием.
Есть ли способ сделать это, например, регулярное выражение?
Мне нужно следовать этим стандартам RFC 3548
Это должно сделать это:
^(?:[A-Z2-7]{8})*(?:[A-Z2-7]{2}={6}|[A-Z2-7]{4}={4}|[A-Z2-7]{5}={3}|[A-Z2-7]{7}=)?$
(?:[A-Z2-7]{8})*
part обрабатывает 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);
Других решений пока нет …