2011-08-19 104 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/