Heim >Web-Frontend >js-Tutorial >Warum stimmt mein JavaScript-Regex nicht korrekt mit den Koordinaten überein?
Warum dieser JavaScript-Regex nicht funktioniert
Im bereitgestellten JavaScript-Code ist der Regex var reg = new RegExp("/(s *([0-9.-] )s*,s([0-9.-] )s*)/g"); stimmt nicht mit der Eingabezeichenfolge var polygons="(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)"; überein, was zu einem Nullwert führt Ergebnis.
Falsche Regex-Verwendung
Der Fehler ist auf zwei falsche Verwendungen des RegExp-Konstruktors zurückzuführen:
Regex-Literal
Um diese Fallstricke zu vermeiden, wird empfohlen, ein Regex-Literal zu verwenden, das in Schrägstriche eingeschlossen und entsprechend maskiert wird die Syntax des regulären Ausdrucks:
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
Ausgabe Extraktion
Die im Code verwendete Syntax polygons.match(reg) gibt ein Array übereinstimmender Teilzeichenfolgen zurück. Da die Eingabezeichenfolge jedoch nur eine einzige Teilzeichenfolge enthält, die mit dem Muster übereinstimmt, ist das Ergebnis ein Array mit einem Element:
["(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)"]
Um die einzelnen Lat/Lon-Paare als Arrays zu extrahieren, verwenden Sie die Methode match() sollte durch exec() ersetzt werden:
[total match result, lat1, lon1, lat2, lon2, ..., latn, lonn] = reg.exec(polygons);
Dies führt zu einem Array, das die Gesamtübereinstimmung und alle erfassten Gruppen enthält, was einen einfachen Zugriff auf die Längen- und Breitengrade ermöglicht Paare.
Das obige ist der detaillierte Inhalt vonWarum stimmt mein JavaScript-Regex nicht korrekt mit den Koordinaten überein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!