【问题标题】:Detect base64 encoding检测base64编码
【发布时间】:2011-10-30 21:48:42
【问题描述】:

有谁知道一个jQuery插件可以检查文本是否是随机编码的base64?我希望能够解码 base64 字符串,但前提是字符串被编码为开头。我看到了几个可以编码和解码的脚本,但我确实有一个可以检查字符串是否被编码。

这样的事情存在吗?

【问题讨论】:

标签: jquery base64


【解决方案1】:

它真的必须是一个 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

【讨论】:

  • 不..我可以自己做扩展。谢谢。
  • 某些文本失败,例如“灰色”是 base64 编码的字符,不是。
  • 这正是答案说“可能”而不是“肯定”的原因。
【解决方案2】:

对于我来说,上述答案不包括在字符串末尾的等号(= 或 ==)填充。我已经更新了查询,以下对我有用。

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})?$");

【讨论】:

    【解决方案3】:

    我知道这可能会迟到回答,但这是我到目前为止提出的。在这种情况下,我在 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/

    【讨论】:

      【解决方案4】:

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

      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)
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2011-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        • 2015-09-27
        • 2012-02-25
        • 1970-01-01
        相关资源
        最近更新 更多