2017-01-11 14 views
0

[Sで始まり、]で終わる文字列のインデックスを検索しようとしていますが、基本的に[S12]のように見えます。この「12」の値を取得し、開始インデックスと終了タグの開始インデックスを取得し、それが持つ値に応じていくつかの値に置き換えます。Javascriptの正規表現は、角括弧と文字で始まり、角括弧で終わります。

私はregexの経験がありません。私はこのような何かを始めました

var pattern = /(^[S&,])/; 
var string = 'Text that [S0]has new[/S0] tag ' 
var result = pattern.test(string); 

しかし、本当にうまくいきます。誤解しないと、このパターンは[Sで始まり、]で終わることを意味します。

私の望ましい結果は、ここでText that <span class="class12">has new</span> tag

https://jsfiddle.net/970ygfkh/

jsfiddleである任意のドキュメント/ポスト/助けになります:)

+1

セミコロンはどこですか? – adeneo

+0

'[S&、]'は、それらの文字( 'S'、'& '、'、 ')のいずれかを許可する文字クラスです。 '^'は文字列の先頭です。あなたの文字列はこれらの文字のいずれかで始まらないので、一致しません。また、 ';'はセミコロンです。 '['は大括弧です。 – chris85

+0

申し訳ありませんが、私の間違いはヘッダーです。 @ chris85うん、だから私の問題に近づく正しい方法は何ですか? – noitse

答えて

0

使用できる:

\[(S\d+)\]+(.*?)\[\/\1\] 

[sと任意の数字との間でテキストをキャプチャし、]と一致する終了ブロックを閉じます。この正規表現を使用すると、含まれているテキストは2番目のキャプチャグループに格納されます。 [S&,]S&、または,を許可されていることを、あなたの最初の正規表現(^[S&,])

^が文字列の先頭になり、()が値を取得しました。したがって、S&または,で始まる文字列だけがキャプチャされています。

私のregexの説明はregex101のhttps://regex101.com/r/nmWbEG/1にあります。

0

は、以下のことを試してみてください良いです:

\[(\w\d+)\](.*)\[\/\1] 

をキャプチャします任意の文字(あなたがSだけを望んでいれば\ wをSに置き換えます)に続けて任意の桁数(したがってy OUは限り終了タグは、すなわち、それのためにそこにあるとしてタグを持っている)、それの内容:

[W20]this is a test[/W20] 

は例のため

W20 

this is a test 

https://regex101.com/r/uiLlM0/1をキャプチャするだろう

関連する問題