2016-05-19 14 views
-1

ich brauche Base64-String zu finden in meinem html ich diesen Ausdruck bekam die Saiten zu finden:Regulärer Ausdruck finden base64 innerhalb Zeichenfolge

^\s*data:([a-z]+\/[a-z]+(;[a-z\-]+\=[a-z\-]+)?)?(;base64)?,[a-z0-9\!\$\&\'\,\(\)\*\+\,\;\=\-\.\_\~\:\@\/\?\%\s]*\s*$ 

Aber mein-Code immer null zurück

kurze Funktion die Regex Aufruf :

m = re.exec(html) 

meine html die base64-String zu finden:

<p>​<span rtenodeid="3" id="ms-rterangecursor-start"></span><span id="ms-rterangecursor-end"></span><span id="ms-rterangepaste-start"></span><span id="ms-rterangepaste-end"></span></p><div style="width: 1px; height: 1px; overflow: hidden;" class="ms-rte-pasteremove" contenteditable="true"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW4AAACOCAIAAACe83XuAAACHklEQVR4nO3c0QnCUAxA0S7uIo6gQ+pfBkgvtOI5ZIOUS6Dwjg/cw5vbWKzvyD8I4A9JCRCQEiAgJUBASoCAlAABKQECx9U/sH/b1euDu3CV7EkJDCnZkxIYUrInJTCkZE9KYEjJnpTAkJI9KYEhJXtSAkNK9qQEhpTsSQkMKdmTEhhSsiclMKRkT0pgSMmelMCQkj0pgSEle1ICQ0r2pASGlOxJCQwp2ZMSGB5kPOXq9cFduEqAgJQAASkBAlICBKQECEgJEJASICAlQEBKgICUAAEpAQJSAgSkBAhICRCQEiAgJUBASoCAlAABKQECUgIEpAQISAkQkBIgICVAQEqAgJQAASkBAlICBKQECEgJEJASICAlQEBKgICUAAEpAQJSAgSkBAhICRCQEiAgJUBASoCAlAABKQECUgIEpAQIHI/nyxhjTo6rBAhICRCQEiAgJUBASoCAlAABKQECUgIEpAQISAkQkBIgICVAQEqAgJQAASkBAlICBKQECEgJEJASICAlQEBKgICUAAEpAQJSAgSkBAhICRCQEiAgJUBASoCAlAABKQECUgIEpAQISAkQkBIgICVAQEqAgJQAASkBAlICBKQECEgJEJASICAlQEBKgICUAAEpAQJSAgSkBAhICRCQEiAgJUBASoCAlAABKQECUgIEpAQISAkQkBIgICVAQEqAgJQAASkBAlICBKQECEgJEJASICAlQOAL8yemKmwohB0AAAAASUVORK5CYII=" alt=""></div> 
+2

würden Sie nicht einen DOM sein besser mit API statt einer Regex? –

+0

Verwenden Sie das DOM, um das Attribut img src zu extrahieren, und analysieren Sie es dann mit einem (mehr) einfachen Muster. –

+0

[Sie können HTML mit RegEx nicht analysieren] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – A1rPun

Antwort

0
function getBase64Imgs() 
{ 
    var b64i = []; 
    var imgs = document.querySelectorAll('img'); 
    if(imgs.length>0) 
    { 
    for(var i in imgs) 
    { 
     if(typeof imgs[i].hasAttribute == 'function') 
     { 
     if(imgs[i].hasAttribute('src')) 
     { 
      if(imgs[i].getAttribute('src').match(/^data:image\/[^;]+;base64,/i)) 
      b64i.push(imgs[i]); 
     } 
     } 
    } 
    } 
    return b64i; 
} 

console.log(getBase64Imgs()); 

ein Array mit img Knoten Dieses zurückgeben, die Base64-kodiert in dem src-Attribute sind :)

DEMO: https://jsfiddle.net/jfacsqy0/1/

Uhr Konsole