如何在Node.js中检查字符串是纯文本还是base64格式

c g*_*c g 8 string validation base64 node.js

我想检查给定函数的字符串是纯文本还是base64格式。我能够将纯文本编码为base64格式并将其反转。但是我无法找出任何方法来验证字符串是否已经是base64格式。任何人都可以在node js中提出正确的方法建议吗?节点js中是否已经有用于执行此操作的API。

Rau*_*ces 10

有效的base64字符串是所有纯文本字符串的子集。假设我们有一个字符串,问题是它是否属于该子集。一种方法是Basit Anwer提出的建议。这些库需要安装libicu。一种更可移植的方法是使用内置的Buffer

Buffer.from(str, 'base64')
Run Code Online (Sandbox Code Playgroud)

不幸的是,该解码功能不会抱怨非Base64字符。它只会忽略非base64字符。因此,仅靠它是无济于事的。但是您可以尝试将其编码回base64,然后将结果与原始字符串进行比较:

Buffer.from(str, 'base64').toString('base64') === str
Run Code Online (Sandbox Code Playgroud)

此检查将告诉您是否str为纯base64。


Bas*_*wer 4

编码是字节级别的。如果您正在处理字符串,那么您所能做的就是猜测或将元数据信息与字符串一起保存以进行识别

但你可以检查这些库:

  1. https://www.npmjs.com/package/detect-encoding
  2. https://github.com/mooz/node-icu-charset- detector