是否有正则表达式来验证 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 对电子邮件地址进行正则表达式验证

Rails 6- 符合 RFC5322 的电子邮件验证

正则表达式根据 RFC2822 验证消息 ID

史上最复杂的验证邮件地址的正则表达式

检查字符串是不是为有效 URL 的 RFC 兼容和工作正则表达式是啥

正则表达式