Javascript:Regex从字符串中获取值
我不擅长正则表达式,所以如果我将下面的字符串传递到someFunction(str)中,需要一些帮助 换句话说,数组的第一部分是标记名,其他部分是其属性 谢谢 您可以尝试以下方法:Javascript:Regex从字符串中获取值,javascript,regex,Javascript,Regex,我不擅长正则表达式,所以如果我将下面的字符串传递到someFunction(str)中,需要一些帮助 换句话说,数组的第一部分是标记名,其他部分是其属性 谢谢 您可以尝试以下方法: /([a-z]+)="([a-z0-9%]+)"/g 这是快速和肮脏的,虽然,不是很有弹性的变化。。。更“盲目”: 后一个将匹配所有不在=前面的=,然后忽略=并匹配之间的内容“这是我处理它的方式: var str = '<table width="100%" border="0" cellspacing="2
/([a-z]+)="([a-z0-9%]+)"/g
这是快速和肮脏的,虽然,不是很有弹性的变化。。。更“盲目”:
后一个将匹配所有不在
=
前面的=
,然后忽略=
并匹配之间的内容“
这是我处理它的方式:
var str = '<table width="100%" border="0" cellspacing="2" cellpadding="2" bgcolor="red">'
var arySplits = str.split(' ');
var aryFinalVals = new Array();
for (var i = 0; i < arySplits.length; i++) {
var arySubSplits = arySplits[i].split('=');
aryFinalVals[arySubSplits[0].replace(/</, '')] = (arySubSplits[1]) ? arySubSplits[1].replace(/"/g, '').replace(/>/, '') : '';
}
var str=''
var aryspits=str.split(“”);
var aryFinalVals=新数组();
对于(变量i=0;i aryFinalVals[ArySublits[0]。替换(/如果您只想将字符串转换为DOM对象,则应该能够使用innerHTML调用浏览器的HTML解析器:
var strToObj = function(str) {
var el = document.createElement('div');
el.innerHTML = str;
return el.childNodes[0];
}
document.body.appendChild(strToObj('<table width="100%" border="0" cellspacing="2" cellpadding="2" bgcolor="red">'))
var strtobj=函数(str){
var el=document.createElement('div');
el.innerHTML=str;
返回el.childNodes[0];
}
文件.正文.附件(strtobj(“”))
快速而肮脏的概念验证:
var input = '<table width="100%" border="0" cellspacing="2" cellpadding="2" bgcolor="red">';
var properties = {};
var tempNode = document.createElement("div");
tempNode.innerHTML = input;
for(var p in tempNode.firstChild.attributes){
if( tempNode.firstChild.attributes.hasOwnProperty(p) ){
properties[tempNode.firstChild.attributes[p].name] = tempNode.firstChild.attributes[p].value;
}
}
var输入=”;
var属性={};
var tempNode=document.createElement(“div”);
tempNode.innerHTML=输入;
for(tempNode.firstChild.attributes中的var p){
if(tempNode.firstChild.attributes.hasOwnProperty(p)){
属性[tempNode.firstChild.attributes[p].name]=tempNode.firstChild.attributes[p].value;
}
}
它还没有完全测试过,并且做了很多假设,但我希望它能给你一个想法。如果你可以将所讨论的元素作为DOM对象访问,那么就使用它,而不是使用它的字符串表示并试图解析它。我没有,我只有上面的字符串,我这样做的原因是为了将它转换为DOM对象ject…@nobody,close,但不获取标记名…您可以使用单独的正则表达式获取标记名,如下所示:/不允许使用innerHTML:(在这里有意义,但是如何获取标记名呢?
var str = '<table width="100%" border="0" cellspacing="2" cellpadding="2" bgcolor="red">'
var arySplits = str.split(' ');
var aryFinalVals = new Array();
for (var i = 0; i < arySplits.length; i++) {
var arySubSplits = arySplits[i].split('=');
aryFinalVals[arySubSplits[0].replace(/</, '')] = (arySubSplits[1]) ? arySubSplits[1].replace(/"/g, '').replace(/>/, '') : '';
}
var strToObj = function(str) {
var el = document.createElement('div');
el.innerHTML = str;
return el.childNodes[0];
}
document.body.appendChild(strToObj('<table width="100%" border="0" cellspacing="2" cellpadding="2" bgcolor="red">'))
var input = '<table width="100%" border="0" cellspacing="2" cellpadding="2" bgcolor="red">';
var properties = {};
var tempNode = document.createElement("div");
tempNode.innerHTML = input;
for(var p in tempNode.firstChild.attributes){
if( tempNode.firstChild.attributes.hasOwnProperty(p) ){
properties[tempNode.firstChild.attributes[p].name] = tempNode.firstChild.attributes[p].value;
}
}