2011-08-19 16 views
5

Qualcuno sa di un plug-in jQuery in grado di verificare se il testo è codificato base64 per caso? Voglio essere in grado di decodificare le stringhe base64 ma solo se la stringa è codificata per cominciare. Vedo molti script che possono essere codificati e decodificati, ma in realtà sono in grado di verificare se la stringa è codificata.Rileva codifica base64

Esiste una cosa del genere?

+0

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

risposta

10

Deve davvero essere un plugin jQuery? Basta usare un semplice JavaScript regex partita:

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

Il modello di espressione regolare è preso da questa domanda: RegEx to parse or validate Base64 data.

+0

No .. Posso fare l'estensione da solo. Grazie. – Nick

+0

Non riesce per alcun testo, ad es. "Grigio" è un carattere codificato in base 64 che non lo è. – user2249160

+0

Questo è esattamente il motivo per cui la risposta dice "probabile" invece di "decisamente". – BalusC

3

La risposta di cui sopra non contava per il riempimento con segni di uguale (= o ==) alla fine della stringa per me. Ho aggiornato la query e il seguente funziona per me.

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

So che questo potrebbe essere tardi per rispondere, ma questo è quello che mi è venuta finora. In questo caso, utilizzo la combinazione {match} in jQuery. Questo è applicabile per immagini o testi. Spero che questo aiuti

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>'); 

provare a guardare questo qui: https://jsfiddle.net/lajatomary/a8tugwe3/4/

Problemi correlati