2011-08-19 21 views
5

¿Alguien sabe de un plugin jQuery que pueda verificar si el texto está codificado en base64 por casualidad? Quiero poder decodificar cadenas base64 pero solo si la cadena está codificada para empezar. Veo varios scripts que pueden codificar y decodificar, pero realmente uno que puede verificar si la cadena está codificada.Detectar codificación base64

¿Existe tal cosa?

+0

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

Respuesta

10

¿Debe ser realmente un plugin jQuery? Sólo tiene que utilizar un simple partido de expresiones regulares de 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. 
} 

El patrón de expresión está tomada de esta pregunta: RegEx to parse or validate Base64 data.

+0

No .. Puedo hacer la extensión yo mismo. Gracias. – Nick

+0

Falla en algunos textos, p. "Gris" es un carácter codificado en base64 que no lo es. – user2249160

+0

Es exactamente por eso que la respuesta dice "probable" en lugar de "definitivamente". – BalusC

3

La respuesta anterior no cuenta para el relleno con signos iguales (= o ==) al final de la cadena para mí. He actualizado la consulta y el siguiente funciona para mí.

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

Sé que esto puede ser tarde para responder, pero esto es lo que ocurrió hasta ahora. En este caso, uso {match} en jQuery. Esto es aplicable para imágenes o textos. Espero que esto ayude

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

tratar de buscar esta aquí: https://jsfiddle.net/lajatomary/a8tugwe3/4/

Cuestiones relacionadas