2013-05-27 163 views
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> 

我用什么正则表达式来做到这一点?

+8

[强制性](http://stackoverflow.com/a/1732454/1223693) – Doorknob

回答

0

我修复了你的正则表达式。如果您想访问<em><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> 
+0

THX这是为我好 – karkonosze