如何用正则匹配出标签中的值?

如何能正则匹配出name的值?

<a name="p17731845"></a>
阅读 3.8k
4 个回答

如果获取一行

function A(str){
    var result = str.match(/<a name="(.*?)"/);
    return result?result[1]:'';
}
A('<a name="p17731845"></a>');  // p17731845

如果要获取多行

function A(str){
var regexp=new RegExp(/<a name="(.*?)"/g),
    array = [],
    result = null;
result = regexp.exec(str);
while(result){
    array.push(result[1])
    result = regexp.exec(str);
}
return array;
}
A('<a name="p17731845"></a><a name="p17731845"></a><a name="p17731845"></a>');  // 
 ["p17731845", "p17731845", "p17731845"]

//楼上的各位,你们确定/<a name="(.*)"/这样可以吗,不需要加个?,写成.*?这样

var str = '<a name="p17731845"></a>'
var reg = /<a name="(.*)">/gi
var s = str.match(reg)
console.log(RegExp.$1)

不用正则:

var els = document.getElementsByTagName('a')
for (var i =0, elsLength=els.length;i<elsLength;i++){
   var el = els[i]
   console.log(el.getAttribute('name'))

}
var str = '<a name="p17731845"></a>';
var reg  = new RegExp(/<a name=\"(.*)\">/);
var result = str.match(reg);
console.log(result[1]);
/<a name=\"(.*)\">/gi

推荐一个验证正则的超好用的在线工具:regexr,效果如下:

图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题