在字符串中查找正确的字符

时间:2013-05-27 13:18:56

标签: javascript

我有字符串:

<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>

我使用什么正则表达式来执行此操作?

1 个答案:

答案 0 :(得分: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>