2017-03-05 6 views
1

こんにちはみんなマッハするグループを使用して再:私はUS $4.5-8.8
構造を検索する必要があるJavascriptの正規表現、別のグループに私は再たとえば、キャプチャ他のグループ</p> <p>のための式を使用したい

は次のとおりです。Part1-パート2

part1をその2は同じコードを持っているが、私はグループのようにパート1を使用してから、再度可能性私は最初のグループを使用して再ために何をすべきhttps://regex101.com/r/E2MjWh/1

:チェックインの

US \$([0-9]{1}(?=\.{1})\.{1}[0-9]+)(?=\-)\- 

4.5-XXXXまで、私が式をdonedましたその2

に使いますか?これは、他のlenguagueでは簡単ですが、私は.. JavaScriptで

PDをそれを行うことはできません:私はVARのようなJavaScriptコードが含まれていない、正規表現でそれを必要とする...などなど。

+0

あなたは、サブパターンを再帰的にすることはできませんが、変数を定義し、動的パターンを構築することができます。または[ '/^US\s+\$(\d*\.?\d+)-(\d*\.?\d+)$/'](https://regex101.com/のようなリテラルの単一正規表現を使用しますR/DbZvFs/2) –

+0

@WiktorStribiżewおお、[OK]を男、どうもありがとうございました – Milor123

答えて

1

ファースト、あなたの正規表現を見ている:彼らは、次のかかるサブパターンと同じを必要とする肯定先読みが本当に必要ではありません。 (?=\.{1})\.{1}手段は、現在位置のすぐ右に1個のドットを必要とし、次いで、ドットが一致*、及び(?=\-)\-が必要と-シンボルと一致する同様の意味を有します。

ここで、正規表現の構文だけを使用してパターンの同じ部分を繰り返すことができるかどうかを尋ねます。いいえ、それはJSの正規表現では不可能です。

あなたはあなたのような文字列全体を一致させるために、次の正規表現を使用することがあります。

/US\s+\$(\d+\.\d+)-(\d+\.\d+)/ 

regex demoを参照してください。確かに、単語境界(単語全体としてUSに一致する)またはアンカー(入力文字列全体に一致する)を追加したり、部分を\d*\.?\d+(整数または浮動小数点数に一致)に置き換えてパターンをさらに強化することができます。

変数に繰り返しの部分を配置することによって、パターンを短くして、コンストラクタの表記法を使用して動的に正規表現を構築する方法があります:必要に応じて

var price = "\\d*\\.?\\d+"; 
var reg = new RegExp("US\\s+\\$(" + price + ")-(" + price + ")"); 

は、必要な修飾子を追加します。

関連する問題