检测base64编码

4

有没有人知道一个jQuery插件可以随机检查文本是否是base64编码的?我想要解码base64字符串,但只有在字符串已被编码的情况下才能这样做。我看到有几个脚本可以进行编解码,但我真正需要的是能够检查字符串是否已经被编码的插件。

这种插件存在吗?


相关问题:https://dev59.com/-HA75IYBdhLWcg3wVXWv - Incognito
1
这个回答解决了你的问题吗?用于解析或验证Base64数据的正则表达式 - Wiktor Stribiżew
4个回答

11

一定要使用jQuery插件吗?只需使用简单的JavaScript正则表达式匹配:

var base64Matcher = new RegExp("^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$");

// ...

if (base64Matcher.test(someString)) {
    // It's likely base64 encoded.
} else {
    // It's definitely not base64 encoded.
}

这个正则表达式模式取自于这个问题:RegEx to parse or validate Base64 data


不用了,我可以自己制作这个扩展。谢谢。 - Nick
它对某些文本无法正常工作,例如“Grey”是一个base64编码的字符,但它实际上不是。 - Ihsahs
这正是答案为什么说“可能”而不是“肯定”的原因。 - BalusC

4

对于我来说,上面的答案没有考虑字符串末尾等号(=或==)的填充。我已经更新了查询,以下内容对我有效。

var base64Matcher = new RegExp("^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})([=]{1,2})?$");


说明:该代码段是关于JavaScript中base64解码的一个正则表达式,用于匹配传入的字符串是否符合base64编码规范,其中涉及到的编码字符集包括大写字母、小写字母和数字。如果符合条件,将返回匹配结果。

2

我知道这可能有点晚回答,但这是我目前想到的。在这种情况下,我使用jQuery中的{match}。这适用于图像或文本。希望这可以帮助到您。

var sSampleBase64Text = 'data:text/plain;base64,MSkgTG9naW4gRGV0YWlscwogPj4gdGNfYWRtaW5fYXllZQogPj4gdHdpbmtsZXMyMnRo';
var mCheckMatchResult = sSampleBase64Text.match(/^(?:[data]{4}:(text|image|application)\/[a-z]*)/);

var sAlertMessage = 'Valid base 64 encode string';
if (mCheckMatchResult === null || mCheckMatchResult.length <= 0) {
     sAlertMessage = 'Not a valid base 64 encode string';
} 

$('.result').append('<p>' + sAlertMessage + '</p>');

请尝试在此处查找: https://jsfiddle.net/lajatomary/a8tugwe3/4/


0

刚遇到这个问题,找到了一个可能有用的解决方案:

function safeBase64Encode(testString) {
  try {
    // If it's encoded, it will look the same in atob(btoa()) and btoa(atob())
    let isEncoded = btoa(atob(testString)) == atob(btoa(testString))
    if ( isEncoded ) {
      return testString
      }
  } catch (err) {
    // If we get an error like it's not a valid encoding, you gotta encode it.
    return btoa(testString)
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接