0

私は文字列を持っています:

<em>hhhhhhhhhhhhh gggggggggggg hhhhhhhhhhh</em> <strong>hhhhhhhhhh hhhhhhhhh hhhhhhhhh</strong> gggggggggg ggggggg hhhhhhhhhhh ggggggggggggggggggggggggg <em>ggggggg ggggggg <strong>gggggggg dddddddddd</strong></em>

そして今、私は見つけません:

var regex = /<em>(.*?)<\/strong><\/em>/g;
var spr = string.match(regexxx);
alert(spr.toString());

これは私の完全な文字列を出力します。

<em>hhhhhhhhhhhhh gggggggggggg hhhhhhhhhhh</em> <strong>hhhhhhhhhh hhhhhhhhh hhhhhhhhh</strong> gggggggggg ggggggg hhhhhhhhhhh ggggggggggggggggggggggggg <em>ggggggg ggggggg <strong>gggggggg dddddddddd</strong></em>

そして確かにこれは良いです。しかし、これは私が望むものではありません!これ欲しい:

<em>ggggggg ggggggg <strong>gggggggg dddddddddd</strong></em>

正規表現は、次の間のすべてを見つける必要があります。

<em>...</strong></em>

しかし、そうでない場合

<em>..**</em>**.</strong></em> .

これは正しくありません:

<em>testestest</em>test test</strong></em> 

これはいい:

<em>test<strong>test test</strong></em>

これを行うには、どの正規表現を使用しますか?

4

1 に答える 1

0

正規表現を修正しました。<em>and要素の内部にアクセスしたい場合は、正規表現 のセクションを<strong>追加するだけです。()[^<]

var regex = /<em>[^<]*?<strong>[^<]*?<\/strong><\/em>/g;
var result = regex.exec(s)
console.log(result[0]);

このプリント:

<em>ggggggg ggggggg <strong>gggggggg dddddddddd</strong></em>
于 2013-05-27T13:37:07.990 に答える