[英]How to get html tag attribute values using JavaScript Regular Expressions?
假设我在字符串中有这个HTML:
<meta http-equiv="Set-Cookie" content="COOKIE1_VALUE_HERE">
<meta http-equiv="Set-Cookie" content="COOKIE2_VALUE_HERE">
<meta http-equiv="Set-Cookie" content="COOKIE3_VALUE_HERE">
我有这个正则表达式,以获取content
属性内的值:
/<meta http-equiv=[\"']?set-cookie[\"']? content=[\"'](.*)[\"'].*>/ig
如何使用JavaScript获取所有三个content
值?
我试过了:
var setCookieMetaRegExp = /<meta http-equiv=[\"']?set-cookie[\"']? content=[\"'](.*)[\"'].*>/ig;
var match = setCookieMetaRegExp.exec(htmlstring);
但match
不包含我需要的值。 救命?
注意:正则表达式已经正确( 请参见此处 )。 我只需要将其与字符串匹配即可。 注意:我正在使用NodeJS
把事情简单化:
/content=\"(.*?)\">/gi
演示: http : //regex101.com/r/dF9cD8
更新(根据您的评论):
/<meta http-equiv=\"Set-Cookie\" content=\"(.*?)\">/gi
仅在此确切的字符串上运行。 演示: http : //regex101.com/r/pT0fC2
您确实需要带问号的(.*?)
,否则正则表达式会一直持续到找到最后一个>
(或换行符)为止。 ?
使搜索停止在第一个"
(如果要匹配单引号或双引号,则可以将其更改为[\\"']
)。
你好亲密! 现在需要做的就是一个简单的循环:
var htmlString = '<meta http-equiv="Set-Cookie" content="COOKIE1_VALUE_HERE">\n'+
'<meta http-equiv="Set-Cookie" content="COOKIE2_VALUE_HERE">\n'+
'<meta http-equiv="Set-Cookie" content="COOKIE3_VALUE_HERE">\n';
var setCookieMetaRegExp = /<meta http-equiv=[\"']?set-cookie[\"']? content=[\"'](.*)[\"'].*>/ig;
var matches = [];
while (setCookieMetaRegExp.exec(htmlString)) {
matches.push(RegExp.$1);
}
//contains all cookie values
console.log(matches);
JSBIN: http ://jsbin.com/OpepUjeW/1/edit?js,控制台
无需正则表达式即可完成一些dom工作
var head = document.createElement("head");
head.innerHTML = '<meta http-equiv="Set-Cookie" content="COOKIE1_VALUE_HERE"><meta http-equiv="Set-Cookie" content="COOKIE2_VALUE_HERE"><meta http-equiv="Set-Cookie" content="COOKIE3_VALUE_HERE">';
var metaNodes = head.childNodes;
for(var i=0; i<metaNodes.length; i++){
var contentValue = metaNodes[i].attributes.getNamedItem("content").value;
}
当您使用nodejs和BlackSheep提到使用cheerio
,如果您想使用该库,则可以使用其语法:
//Assume htmlString contains the html
var cheerio = require('cheerio'),
$ = cheerio.load(htmlString);
var values=[];
$("meta").each(function(i, elem) {
values[i] = $(this).attr("content");
});
尝试这个:
var setCookieMetaRegExp = "/<meta http-equiv=[\"']?set-cookie[\"']? content=[\"'](.*)[\"'].*>/ig";
var match = stringToFindPartFrom.match(setCookieMetaRegExp);
尝试这个:
var myString = '<meta http-equiv="Set-Cookie" content="COOKIE2_VALUE_HERE">';
var myRegexp = /<meta http-equiv=[\"']?set-cookie[\"']? content=[\"'](.*)[\"'].*>/ig;
var match = myRegexp.exec(myString);
alert(match[1]); // should show you the part
尝试这个
(?:class|href)([\s='"./]+)([\w-./?=&\\#"]+)((['#\\&?=/".\w\d]+|[\w)('-."\s]+)['"]|)
例如:
function getTagAttribute(tag, attribute){
var regKey = '(?:' + attribute + ')([\\s=\'"./]+)([\\w-./?=\\#"]+)(([\'#\\&?=/".\\w\\d]+|[\\w)(\'-."\\s]+)[\'"]|)'
var regExp = new RegExp(regKey,'g');
var regResult = regExp.exec(tag);
if(regResult && regResult.length>0){
var splitKey = '(?:(' + attribute + ')+(|\\s)+([=])+(|\\s|[\'"])+)|(?:([\\s\'"]+)$)'
return regResult[0].replace(new RegExp(splitKey,'g'),'');
}else{
return '';
}
}
getTagAttribute('<a href = "./test.html#bir/deneme/?k=1&v=1" class= "xyz_bir-ahmet abc">','href');'
//return "./test.html#bir/deneme/?k=1&v=1"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.