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;
正規表現出力分析:
正規表現をよりよく理解するには、コンソールを使用してそのパターンを出力できます:
/(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 サイトの他の関連記事を参照してください。