2017-02-09 22 views
-2

正規表現について質問があります。私は1つの正規表現で3つの異なる州で2つのマッチをしたい。 これは正規表現を実行するソースです。JavaScript正規表現

まず例:

@@include('some string here', []) 

// This is the output I want: 
// First match: 'some string here' 
// Second match: '[]' 

第二の例:

@@include('some string here', {}) 

// This is the output I want: 
// First match: 'some string here' 
// Second match: '{}' 

第三例:

@@include('some string here') 

// This is the output I want: 
// First match: 'some string here' 

すべてトン彼は私が単一の正規表現で必要とすると述べている。これは可能ですか?

+0

この構文はjavascriptではありません – Isaac

+1

2番目の部分にはオプションのパターンを使用してください。 – Barmar

+1

@Isaacマッチングを行うコードはおそらくJavascriptで記述されています。 – Barmar

答えて

1

は、これはあなたがあなたの「{}」と「[]」内の妥当な値であることを期待するものに基づいて、いくつかの微調整が必​​要な場合がありますが、それは正しい軌道に乗ってあなたを取得する必要があります:

var regex = /@@include\((\'.*?\')(?:,\s+(\[.*?\]|\{.*?\}))?\)/i; 
// or, non greedy version: 
// var regex = /@@include\((\'.*?\')(?:,\s+(\[.*\]|\{.*\}))?\)/i; 

"@@include('some string here')".match(regex); 
// ["@@include('some string here')", "'some string here'", undefined] 

"@@include('some string here', {})".match(regex); 
// ["@@include('some string here', {})", "'some string here'", "{}"] 

"@@include('some string here', [])".match(regex); 
// ["@@include('some string here', [])", "'some string here'", "[]"] 

希望これを助けて!

+0

あなたの答えをありがとう! {}と[]の一致はオブジェクトまたは配列です。 – justkidding96

+0

私は知っていますが、そういう意味で価値があるでしょうか?配列内のオブジェクトまたは配列内にオブジェクトがありますか?それは物事を複雑にする可能性があります...あなたは内部のコンテンツを非貪欲にする必要があるかもしれません...私の答えを更新しました – MacPrawn

+0

はい私の配列やオブジェクト内のすべての種類のものが欲しいです。オブジェクト内の配列や配列を持つオブジェクトと同じです。これどうやってするの? – justkidding96