Warum funktioniert dieser JavaScript-Regex nicht?
Beim Versuch, Punkte aus einer Zeichenfolge mit einem regulären Ausdruck zu extrahieren, ist ein Benutzer auf eine Null gestoßen Ergebnis. Der bereitgestellte reguläre Ausdruck „(s([0-9.-] )s,s([0-9.-] )s*)“ stimmt mit Punkten überein, die in Klammern eingeschlossen und durch Kommas getrennt sind. Wenn es jedoch auf eine Zeichenfolge wie „(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)“ angewendet wird, ist es schlägt fehl.
Lösung
Die Hauptursache ist die falsche Verwendung des RegExp-Konstruktors. Um ein Regex-Literal zu verwenden, das praktischer und weniger fehleranfällig ist, ersetzen Sie „new RegExp“ durch „/“. Darüber hinaus werden Modifikatoren als zweites Argument übergeben:
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
Hinweis zur Ausgabe
match() gibt ein Array übereinstimmender Zeichenfolgen zurück, was möglicherweise nicht nützlich ist Zahlenwerte extrahieren. Stattdessen sollte exec() verwendet werden, um einzelne Übereinstimmungen zu extrahieren:
var result, points = []; while ((result = reg.exec(polygons)) !== null) { points.push([+result[1], +result[2]]); }
Dadurch wird ein Array erstellt, das Koordinaten als Zahlen enthält. Wenn Zeichenfolgen bevorzugt werden, können Sie alternativ das unäre Pluszeichen ( ) weglassen.
Das obige ist der detaillierte Inhalt vonWarum kann mein JavaScript-Regex keine Koordinaten aus einem String extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!