如何使用正则表达式获取标记内容?

时间:2014-08-22 11:39:53

标签: javascript regex preg-replace

我的字符串<a href="/?an=mb_artist&uid=40574" target="_blank">Maroon 5</a> - <a href="/?an=mb_track&uid=151311">One More Night</a>

尝试使用正则表达式/<a.*>(.*)<\/a>/ig获取代码的内容,但只获得“再来一晚”,如何获得“Maroon 5”和“再来一晚”?

2 个答案:

答案 0 :(得分:1)

在javascript中,你有更多使用标记DOM的方法。

例如jQuery库......

请参阅我的小提琴示例:http://jsfiddle.net/3kfcp156/

    $(document).ready(function() {
        $('a').each(function(item,idx) {
            alert($(this).text());
        });
     });

答案 1 :(得分:0)

*之后添加问号。如果没有问号,正则表达式会尝试匹配尽可能多的字符(贪婪模式)。尽可能少地提出问号。

/<a.*?>(.*?)<\/a>/ig

    /<a.*>(.*)<\/a>/ig
//   ^^^^^ this part matches: <a href="/?an=mb_artist&uid=40574" target="_blank">Maroon 5</a> - <a href="/?an=mb_track&uid=151311">

演示:http://regex101.com/r/hX1aD1/2

更新

var myRe = /<a.*?>(.*?)<\/a>/ig;
var myArray;
while ((myArray = myRe.exec(str)) !== null)
{
  var content = myArray[1];
  // do something with it
}