2016-04-30 12 views
5

Ich habe eine Zeichenfolge so etwas wie [[user.system.first_name]][[user.custom.luid]] blah blahDaten zwischen Zeichen mit Regex extrahieren?

Ich möchte user.system.first_name und user.custom.luid

I /\[\[(\S+)\]\]/ gebaut passen, aber es ist passend user.system.first_name]][[user.custom.luid.

Irgendeine Idee, wo ich falsch mache?

+0

'/ \ [\ [(\ S +?) \ ] \]/' –

+1

Po ssible duplicate of [Regulärer Ausdruck um Text zwischen eckigen Klammern zu extrahieren] (http://stackoverflow.com/questions/2403122/regular-expression-to-extract-text-between-square-brackets) –

Antwort

3

Machen Sie es nicht gierige ? mit möglichst wenigen eingegebenen Zeichen wie möglich entsprechen. Dass Ihre regex /\[\[(\S+?)\]\]/

var str = '[[user.system.first_name]][[user.custom.luid]] blah blah' 
 
var reg = /\[\[(\S+?)\]\]/g, 
 
    match, res = []; 
 

 
while (match = reg.exec(str)) 
 
    res.push(match[1]); 
 

 
document.write('<pre>' + JSON.stringify(res, null, 3) + '</pre>');

1

wird, wenn Sie benötigen 2 separate Matches verwenden:

\[\[([^\]]*)\]\] 

Regex101 Demo

1

Ich denke /[^[]+?(?=]])/g eine schnelle Regex ist. Stellt sich heraus, in 44 abgeschlossen werden die Schritte

[^[]+?(?=]]) 

Regular expression visualization

Debuggex Demo

Regex101

var s = "[[user.system.first_name]][[user.custom.luid]]", 
 
    m = s.match(/[^[]+?(?=]])/g); 
 
document.write("<pre>" + JSON.stringify(m,null,2) + "</pre>") ;

Verwandte Themen