ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 正規表現が座標の抽出に失敗するのはなぜですか?

JavaScript 正規表現が座標の抽出に失敗するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-04 19:01:18979ブラウズ

Why Are My JavaScript Regexes Failing to Extract Coordinates?

JavaScript 正規表現の失敗分析

JavaScript 正規表現から null の結果が発生した場合は、式の背後にある複雑さを詳しく調べることが重要です。コンマ区切りの文字列から座標を抽出するための特定の正規表現が一致しない理由を調べてみましょう:

正規表現の構築上の欠陥:

問題の正規表現は次のように定義されていました:

new RegExp("/\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g")

代わりに、正規表現リテラルを次のようにする必要がありました。使用:

var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
  1. 区切り文字は式の一部ではないため、含めないでください。
  2. 正規表現リテラルの方が便利で、潜在的なバックスラッシュの問題を回避するのに役立ちます。

正規表現出力分析:

正規表現をよりよく理解するには、コンソールを使用してそのパターンを出力できます:

/(s*([0-9.-]+)s*,s([0-9.-]+)s*)/g

これにより、式がリテラル 's'、'g' に一致することがわかります。 、および括弧は文字通り、意図された動作ではありません。

配列出力考慮事項:

match() は一致の配列を返すことに注意することが重要です:

["(25.774252, -80.190262)", "(18.466465, -66.118292)", ... ]

個々の数値を抽出するには、代わりに exec() を使用する必要があります:

["(25.774252, -80.190262)", "25.774252", "-80.190262"]

単項プラス演算子 ( ) を使用して文字列を次のように変換できます。 numbers.

完全なコード:

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]]);
}

このコードは、抽出された座標を数値として含む配列の配列を作成します。

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

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