2017-05-03 31 views
-1

私はそうのような文字列で[マーキー] [/マーキー]タグの間に含まれるHTMLの文字列を持っていますマーキーを使用して、各マーキーを配列要素として配列を作成します。正規表現マッチングのjavascript

私がこれまで試したことはある:

var marqueeArray = s.trim().match(/\[marquee\][\s\S]*\[\/marquee\]/g); 

が、私は戻って取得するすべてのと両方マーキーは、このような1つの文字列として含まれて終わる1の長さを持つ配列:

["[marquee]<p>some html here 1</p>[/marquee][marquee]<p>some html here again 2</p>[/marquee]"] 
私が望むものを

これです:

["[marquee]<p>some html here 1</p>[/marquee]", "[marquee]<p>some html here again 2</p>[/marquee]"] 

最終的に私は、括弧([マーキー]と[/マーキーを削除する必要があります])を使用し、アプリケーションで使用するために1つの大きな文字列で置き換えて結合します。その上に正しい方向の任意のポイントも同様に素晴らしいでしょう。

+1

ただ、 '[\ S \ S] *を使用' – horcrux

+1

あなたは 'sのを使用することができますか? = s.split(/ \ [\ /?marquee \] /)。join( ""); ' – Titus

答えて

2

絞り込み検索を行うには、?限定記号を使用する必要があります。

上記のように?を追加します。\[marquee\][\s\S]*\[\/marquee\]

Regex101 Demo

+1

これは私がする必要があるために機能しました。ありがとうございました。 – James

1

以下は、すべてのマーキータグとそれらの間のコンテンツと一致します。

s.match(/(\[marquee\].*?\[\/marquee\])/g); 

あなたがコンテンツにあなたが以下のように使用することができます間のマーキータグをキャプチャしたい場合:

var pattern = /\[marquee\](.*?)\[\/marquee\]/g; 
var match = pattern.exec(s); 
while(match != null){ 
    console.log(match[1]); // Prints out content between tags 
    match = pattern.exec(s); 
} 
+0

これも私のために働いていたでしょう。ありがとうございました。 – James