Heim >Web-Frontend >js-Tutorial >Warum können meine JavaScript-Regexes keine Koordinaten extrahieren?
JavaScript-Regex-Fehleranalyse
Wenn bei JavaScript-Regexen Nullergebnisse auftreten, ist es wichtig, sich mit den Feinheiten hinter dem Ausdruck zu befassen. Lassen Sie uns untersuchen, warum ein bestimmter regulärer Ausdruck zum Extrahieren von Koordinaten aus einer durch Kommas getrennten Zeichenfolge keine Übereinstimmungen ergab:
Regex-Konstruktionsfehler:
Der betreffende reguläre Ausdruck wurde wie folgt definiert:
new RegExp("/\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g")
Stattdessen hätte es ein Regex-Literal sein sollen verwendet:
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
Analyse der Regex-Ausgabe:
Um den Regex besser zu verstehen, kann man ihn ausgeben Muster mithilfe der Konsole:
/(s*([0-9.-]+)s*,s([0-9.-]+)s*)/g
Dies zeigt, dass der Ausdruck mit den Literalen „s“, „g“ und Parens wörtlich übereinstimmt, was nicht das beabsichtigte Verhalten ist.
Überlegungen zur Array-Ausgabe:
Es ist wichtig zu beachten, dass match() ein Array von zurückgibt Übereinstimmungen:
["(25.774252, -80.190262)", "(18.466465, -66.118292)", ... ]
Um die einzelnen Zahlen zu extrahieren, sollte stattdessen exec() verwendet werden:
["(25.774252, -80.190262)", "25.774252", "-80.190262"]
Der unäre Plusoperator ( ) kann dann verwendet werden, um Zeichenfolgen in Zahlen umzuwandeln.
Vollständiger Code:
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g; var result, points = []; while((result = reg.exec(polygons)) !== null) { points.push([+result[1], +result[2]]); }
Dieser Code erstellt ein Array von Arrays Enthält die extrahierten Koordinaten als Zahlen.
Das obige ist der detaillierte Inhalt vonWarum können meine JavaScript-Regexes keine Koordinaten extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!