ホームページ >ウェブフロントエンド >jsチュートリアル >私の JavaScript 正規表現が座標に正しく一致しないのはなぜですか?
この 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 つの誤った使用法に起因します:
正規表現リテラル
これらの落とし穴を回避するには、で囲まれた正規表現リテラルを使用することをお勧めします。スラッシュを使用し、正規表現に従ってエスケープする構文:
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 サイトの他の関連記事を参照してください。