是否有正则表达式来验证 Base32 :: RFC 3548
Posted
技术标签:
【中文标题】是否有正则表达式来验证 Base32 :: RFC 3548【英文标题】:Is there a RegEx to validate a Base32 :: RFC 3548 【发布时间】:2015-02-06 09:17:24 【问题描述】:我想在转换之前验证 Base32 代码。 有没有办法做到这一点,比如正则表达式? 我需要通过RFC 3548来遵守这些标准
【问题讨论】:
@BreyndotEchse - 不同之处在于 base64 被填充到 4 字节块中,而 base32 被填充到 8 字节块中。两者都用=
填充。 编辑:评论不见了,但这里是它引用的帖子:***.com/a/475217/477563
【参考方案1】:
应该这样做:
^(?:[A-Z2-7]8)*(?:[A-Z2-7]2=6|[A-Z2-7]4=4|[A-Z2-7]5=3|[A-Z2-7]7=)?$
Demo
(?:[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);
【讨论】:
以上是关于是否有正则表达式来验证 Base32 :: RFC 3548的主要内容,如果未能解决你的问题,请参考以下文章
根据 RFC5321/RFC5322 对电子邮件地址进行正则表达式验证