ホームページ >ウェブフロントエンド >jsチュートリアル >私の JavaScript 正規表現が座標に正しく一致しないのはなぜですか?

私の JavaScript 正規表現が座標に正しく一致しないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-13 02:14:12516ブラウズ

Why Isn't My JavaScript Regex Matching Coordinates Correctly?

この JavaScript Regex が機能しない理由

提供された JavaScript コードでは、正規表現 var reg = new RegExp("/(s *([0-9.-] )s*,s([0-9.-] )s*)/g");入力文字列 var Polygons="(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)"; との一致に失敗し、null が返されます。 result.

正規表現の使用法が正しくありません

このエラーは、RegExp コンストラクターの 2 つの誤った使用法に起因します:

  1. 区切り文字: スラッシュ (/) を正規表現文字列の一部として含めないでください。代わりに、/(s*([0-9.-] )s*,s([0-9.-] )s*)/g 構文を使用して、区切り文字として「/」を含む式を定義します。
  2. バックスラッシュのエスケープ: 正規表現文字列を使用する場合、リテラル表現を確実にするために、バックスラッシュ文字を別の文字でエスケープする必要があります。は、JavaScript 文字列のエスケープ シーケンス用に予約されています。

正規表現リテラル

これらの落とし穴を回避するには、で囲まれた正規表現リテラルを使用することをお勧めします。スラッシュを使用し、正規表現に従ってエスケープする構文:

var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;

出力抽出

コードで使用されているpolygons.match(reg)構文は、一致した部分文字列の配列を返します。ただし、入力文字列にはパターンに一致する単一の部分文字列のみが含まれるため、結果は単一要素の配列になります。

["(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)"]

個々の緯度と経度のペアを配列として抽出するには、match() メソッドを使用します。 exec():

[total match result, lat1, lon1, lat2, lon2, ..., latn, lonn] = reg.exec(polygons);

で置き換える必要があります。これにより、全体的な一致とすべてのキャプチャされたグループを含む配列が作成され、緯度/経度に簡単にアクセスできるようになります。ペア。

以上が私の JavaScript 正規表現が座標に正しく一致しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。