Heim >Web-Frontend >js-Tutorial >Warum stimmt mein JavaScript-Regex nicht korrekt mit den Koordinaten überein?

Warum stimmt mein JavaScript-Regex nicht korrekt mit den Koordinaten überein?

Susan Sarandon
Susan SarandonOriginal
2024-12-13 02:14:12513Durchsuche

Why Isn't My JavaScript Regex Matching Coordinates Correctly?

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:

  1. Trennzeichen: Die Schrägstriche (/) sollten nicht als Teil der regulären Ausdruckszeichenfolge enthalten sein. Verwenden Sie stattdessen die Syntax /(s*([0-9.-] )s*,s([0-9.-] )s*)/g, um den Ausdruck mit „/“ als Trennzeichen zu definieren.
  2. Backslashes mit Escapezeichen versehen: Bei Verwendung einer regulären Ausdruckszeichenfolge muss das Backslash-Zeichen mit einem anderen Zeichen maskiert werden, um seine wörtliche Darstellung sicherzustellen, da es für Escape-Sequenzen in reserviert ist JavaScript-Zeichenfolgen.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn