正则表达式提取模式之间的文本

时间:2011-06-16 18:29:43

标签: javascript regex preg-match

我需要你的javascript中的正则表达式的帮助。

我有一个带有跟随模式的标签

<a href='#'>
  <!--:de-->some german text<!--:--><!--:en-->some english text<!--:-->
</a>

所以,现在我正在寻找一个正则表达式,将每个部分提取出来

 1. <!--:de-->some german text<!--:-->
 2. <!--:en-->some german text<!--:-->

非常感谢

3 个答案:

答案 0 :(得分:19)

试试这个:

var str = '<!--:de-->some german text<!--:--><!--:en-->some english text<!--:-->'; 
var match =  str.match(/de-->([^<]+).+?en[^>]+>([^<]+)/i);
var textInDe = match[1]; 
var textInEn = match[2]; 

答案 1 :(得分:1)

如果您期望超过2个部分,我建议您使用分隔符

分割字符串
var str="<!--:de-->some german text<!--:--><!--:en-->some english text<!--:--><!--:fr-->some french text<!--:-->";

var col_array=str.split("<!--:-->");
var part_num=0;
while (part_num < col_array.length)
{
 document.write(col_array[part_num]+"<br>");
 part_num+=1;
}

答案 2 :(得分:1)

试试这个Javascript代码:

var ger = /<!--:de-->.*?<!--:-->/g;
document.writeln(html.match(ger).map(function (s) { return s; }));

var eng = /<!--:en-->.*?<!--:-->/g;
document.writeln(html.match(eng).map(function (s) { return s; }));

输出

一些德语文本

一些英文文本