2011-08-19 132 views
5

有谁知道一个jQuery插件,可以检查文本是否是base64编码偶然?我希望能够解码base64字符串,但只有在字符串编码开始时才能解码。我看到有几个脚本可以编码和解码,但我真的可以检查字符串是否被编码。检测base64编码

这样的事情是否存在?

+0

相关问:http://stackoverflow.com/questions/3355407/validate-string-is-base64-format-using-regex #3355534 – Incognito

回答

10

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

+0

没有..我可以自己做扩展。谢谢。 – Nick

+0

某些文字失败,例如“灰色”是一个base64编码的字符,不是。 – user2249160

+0

这就是为什么答案是“可能”而不是“绝对”。 – BalusC

3

上面的答案没有计算在字符串末尾填充等号(=或==)的填充符。我已经为我更新了查询和以下作品。

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

0

我知道这可能会晚点来回答,但是这是我想出了这么远。在这种情况下,我使用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/