📅  最后修改于: 2023-12-03 15:40:34.612000             🧑  作者: Mango
在 JavaScript 中,我们可以使用正则表达式来检查一个字符串是否为 base64 编码的格式。本文将介绍如何进行此类检查,并提供样例代码。
最简单的方法是使用正则表达式来判断字符串是否基本上符合 base64 编码的规则,即:
正则表达式:
const isBase64 = (str) => {
return /^(?:[A-Za-z0-9+/]{4})*?(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);
};
为了理解这个正则表达式,我们可以将其分解:
^
表示匹配字符串的开头;(?:[A-Za-z0-9+/]{4})*?
表示匹配零个或多个由 A-Z, a-z, 0-9, +, / 组成、长度为 4 的字符;(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?
表示匹配 0 个或 1 个由 A-Z, a-z, 0-9, +, / 组成、长度为 2 或 3 的字符,后面跟随一个或两个等号;$
表示匹配字符串的结尾。此正则表达式涵盖了大多数情况,但也有一些不是 base64 编码格式的字符串依然符合此正则表达式。比如:
这些情况下,我们可以进一步检查字符串长度是否为 4 的倍数,或者使用其他的 base64 decode 函数检查字符串是否能够成功解码。
使用该正则表达式判断字符串是否为 base64 编码的样例代码如下:
const isBase64 = (str) => {
return /^(?:[A-Za-z0-9+/]{4})*?(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);
};
console.log(isBase64('dGhpcyBpc24ndCBhIHJlYWwgdGVzdA==')); // true
console.log(isBase64('dGhpcyBpc24ndCBhIHJ lYWwgdGV zdA==')); // false,包含空格
console.log(isBase64('dGhpcyBpc24ndCBhIHJlYWwgdGVzdA====')); // true,添加了多余等号
console.log(isBase64('dGhpcyBpc24ndCBhIHJlYWwgdGV||||')); // false,包含了无法解码的字符
可以看到,在上面的四个样例中只有第一行返回了 true,其他均为 false。
通过使用正则表达式,我们可以较为简便地判断一个字符串是否为 base64 编码的格式。但是需要注意,正则表达式并不能覆盖所有情况,如果有更高要求的话,我们还需要使用其他方法进行进一步的处理。