2017-01-31 4 views
-4

Ich versuche, reguläre Ausdrücke zu verwenden, um etwas ähnlich der folgenden Zeichenfolge herauszuziehen. Es wird jedoch mehrere mit verschiedenen Funktionen innerhalb des data-plugin Attributs geben.Extrahieren von Daten aus HTML mit regulären Ausdrücken

<div class="plugin" data-plugin="function(1,2,'func')"></div> 

ich einen Ausdruck wie folgt verwendet wurde:

/<div class="js-plugin" data-plugin="([a-zA-Z0-9\(\),\' ]*)"></div>/ 

Allerdings kann dies als die Zeichenfolge nicht funktionieren wie 'func' alle Arten von Sonderzeichen enthalten könnte.

Wie kann ich einen regulären Ausdruck verwenden, um die gesamte Zeichenfolge herausziehen und den Inhalt innerhalb data-plugin="" sowie vorausgesetzt, dass mehrere Übereinstimmungen sein können.

+0

Warum möchten Sie dafür reguläre Ausdrücke verwenden ?? – UnholySheep

+4

Sie werden auf jeden Fall lesen wollen: [Sie können HTML mit Regex nicht analysieren] (http://Stackoverflow.com/a/1732454/1175966) – charlietfl

+0

Nun, ich bin auf etwas Code gelandet, an dem ich arbeiten muss. Es verwendet PHP, jetzt muss ich Regex verwenden, um eine massive HTML-Zeichenfolge durchzugehen und diese Funktionen herauszunehmen, damit ich eval() sie und das HTML ersetze und im Wesentlichen auf die Seite ausgibt. – mdixon18

Antwort

4

Verwenden Sie Regex nicht, um Daten von einem HTML-Element abzurufen. Wählen Sie das Element aus und verwenden Sie dom-Methoden, um stattdessen die Daten abzurufen.

console.log(document.querySelector(".plugin").getAttribute("data-plugin"));
<div class="plugin" data-plugin="function(1,2,'func')"></div>

0

Wenn Sie Regex benötigen, sollte diese Arbeit.

Regex:

\bdata-plugin="([a-zA-Z0-9\(\),\']*) 

Input:

<div class="plugin" data-plugin="function(1,2,'func')"></div> 

Output:

function(1,2,'func') 

const regex = /\bdata-plugin="([a-zA-Z0-9\(\),\']*)/; 
 
const str = `<div class="plugin" data-plugin="function(1,2,'func')"></div> 
 
`; 
 
let m; 
 

 
if ((m = regex.exec(str)) !== null) { 
 
    // The result can be accessed through the `m`-variable. 
 
    m.forEach((match, groupIndex) => { 
 
     console.log(`Found match, group ${groupIndex}: ${match}`); 
 
    }); 
 
}

Siehe: https://regex101.com/r/FPH9O3/3

+0

Bitte fügen Sie eine Erklärung hinzu, warum dieser Code dem OP hilft. Dies wird helfen, eine Antwort zu liefern, von der zukünftige Zuschauer lernen können. Weitere Informationen finden Sie unter [Antwort]. –

Verwandte Themen