📜  检查是否 base64 - Javascript (1)

📅  最后修改于: 2023-12-03 15:40:34.612000             🧑  作者: Mango

检查是否 base64 - JavaScript

在 JavaScript 中,我们可以使用正则表达式来检查一个字符串是否为 base64 编码的格式。本文将介绍如何进行此类检查,并提供样例代码。

判断字符串是否为 base64 编码

最简单的方法是使用正则表达式来判断字符串是否基本上符合 base64 编码的规则,即:

  • 由 A-Z, a-z, 0-9, +, /, = 组成;
  • 每 4 个字符为一组,组与组之间使用等号(=)进行填充。

正则表达式:

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 编码的格式。但是需要注意,正则表达式并不能覆盖所有情况,如果有更高要求的话,我们还需要使用其他方法进行进一步的处理。