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

JavaScript 正規表現が座標の抽出に失敗するのはなぜですか?それを修正するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-10 04:19:13444ブラウズ

Why Does My JavaScript Regex Fail to Extract Coordinates, and How Do I Fix It?

JavaScript 正規表現の誤動作について

JavaScript で、開発者は、正規表現 (regex) からポイントを抽出するように設計された問題に遭遇しました。与えられた文字列。正規表現パターンは、形式 (緯度、経度) の座標ペアを照合しようとしましたが、テスト文字列と組み合わせて使用​​すると結果が生成されませんでした。

開発者は RegexPal で正規表現パターンを正しくテストしました。期待通りの結果が得られました。ただし、パターンが JavaScript で実装されると、予想される一致配列ではなく null が返されました。

解決策: バックスラッシュのエスケープと正規表現リテラルの使用

Toこの問題を解決するには、開発者は 2 つの調整を行う必要がありました。まず、JavaScript で RegExp オブジェクトを使用する場合、正規表現パターンを区切るスラッシュ (/) を式の一部として含めないでください。

次に、JavaScript 文字列ではバックスラッシュ文字 () が特別な意味を持ちます。 。したがって、正規表現パターンを文字列として定義する場合、各バックスラッシュを別のバックスラッシュを使用してエスケープする必要があります。

あるいは、開発者は、より簡潔で便利なオプションである正規表現リテラルを使用することもできます。正規表現リテラルは、次のようにパターンをスラッシュで囲むことによって表されます。

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

正規表現パターンを理解する

座標ペアの一致を目的とした提供された正規表現パターン各座標の前後にオプションの空白を入れて括弧で囲みます。パターンは 3 つのキャプチャ グループで構成されます:

  • (s*([0-9.-] )s* は開き括弧に一致し、その後にオプションの空白が続き、緯度座標をグループとしてキャプチャします。 .
  • 、座標を区切るカンマと一致します。
  • s*([0-9.-] )s* は、カンマの後のオプションの空白と一致し、経度座標を別のグループとしてキャプチャします。

g 修飾子により、パターンは入力文字列内のパターンのすべての出現を検索します。

.exec()

In を使用した座標の抽出JavaScript では、.match() メソッドは、入力文字列の一致部分全体を表す文字列の配列を返します。ただし、この特定の使用例では、個々の座標ペアを抽出するには、代わりに .exec() メソッドを使用する必要があります。

.exec() メソッドは値の配列を返します。最初の要素は一致した部分文字列全体で、後続の要素はキャプチャされたグループです。

座標を抽出するには、開発者は、一致するものがなくなるまで繰り返し .exec() を呼び出すことができます。毎回、返される配列の 2 番目と 3 番目の要素には、それぞれ緯度と経度の座標が含まれます。

実装例

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

このコードは、入力文字列から座標ペアを抽出し、配列の配列としてポイント配列に格納します。各内部配列には緯度と経度の座標が含まれます。

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

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