2017-01-13 3 views
0

Ich versuche, Cookies in gropus mit dieser Regex zu teilen (.*?=.*?); ? Was ich wollte, ist ein Cookie in jeder Regex-Gruppe. Aber es gibt mir nur die erste passende Gruppe.Warum funktioniert diese Regex nicht?

var string = userid=edaa4200-b140-47fd-9db8-b48082a0d0a8; ab_93896527=0; 

edit: Ich verwende exec() Funktion

var cookies_tuples = /(.*?=.*?); ?/g.exec(string); 

, was das Problem sein könnte?

+0

Wie läufst du es? '" userid = edaa4200-b140-47fd-9db8-b48082a0d0a8; ab_93896527 = 0; ".abgleich (/(.*?=.*?);?/g)' gibt die beiden Gruppen zurück. –

+0

WebStorm mit nodejs, aber auch in Regexr.com bekomme ich dieses Problem Ich habe die exec() -Funktion verwendet – limitless

+1

How ==> einige Code ... Oder es ist keine JavaScript-Frage –

Antwort

2

Sie anrufen müssen exec mehrfach, auch mit dem globalen Flag aktiviert:

var re = /(.*?=.*?);\s?/g; 
 
    var input = "userid=edaa4200-b140-47fd-9db8-b48082a0d0a8; ab_93896527=0;"; 
 
    var myArray; 
 
    while ((myArray = re.exec(input)) != null) 
 
    { 
 
     var msg = "Found " + myArray[0]; 
 
     console.log(msg); 
 
    }

0

in https://regex101.com/ gibt es mir beide Cookies. Sie HAVO es gierig < laufen - mit der g-Flagge

  • und Bevor jemand kann sich beschweren, müssen Sie 50 Ruf zu kommentieren, so schrieb ich nur eine Antwort;)
+1

die 'g' Flagge ist für globale, nicht mit gierigen'. * 'vs nicht gierigen'. *? 'Tokens zu verwechseln. – sweaver2112

+0

Entschuldigung, meine schlechte - beschissene Erinnerung Hilfe auf meiner Seite ^^ – Maria

1

Verwenden Sie einfach die Methode string.match wie unten angegeben. Wenn Sie RegEx.exec verwenden, müssen Sie iterieren, um alle Übereinstimmungen zu erhalten.

var s = "userid=edaa4200-b140-47fd-9db8-b48082a0d0a8; ab_93896527=0;" 
 
var cookies_tuples = s.match(/(.*?=.*?); ?/g); 
 

 
console.log(cookies_tuples);

Verwandte Themen