使用JavaScript Regex解析ad.size元标记以将宽度/高度解析为整数

时间:2017-08-17 15:27:29

标签: javascript html html-parsing meta-tags

使用JavaScript,如何从位于HTML文件的HEAD部分的元标记中获取广告尺寸的宽度和高度?

在HTML文件的HEAD中:

<script type="text/javascript">
    // Returns a string "width=160,height=600"
    var dimensionsStr = document.querySelector('meta[name="ad.size"]')['content‌​'];

</script>

如何解析此字符串以获取:

var width = 160;
var height = 600;

2 个答案:

答案 0 :(得分:1)

您可以动态地从该内容中提取所有“变量”:

// Returns a string "width=160,height=600"
var dimensionsStr = document.querySelector('meta[name="ad.size"]').content;
var obj = dimensionsStr.split(",").reduce( (obj, s) => {
    var [key, value] = s.match(/[^\s;=]+/g);
    obj[key] = isNaN(value) ? value : +value;
    return obj;
}, {});

console.log(obj);
<meta name="ad.size" content="width=160,height=600"></meta>

这样,如果widthheight的顺序相反,或者您在该内容中有其他变量也无关紧要。

答案 1 :(得分:0)

更优雅高效的方式(使用地图拆分):

{
  const dimensionsStr = 'width=160,height=600';

  const matched = dimensionsStr.split(',').map(str => parseInt(str.split('=')[1]));
  //[160, 600]

  var [width, heigth] = matched; //ES6 destructuring assignment

  console.log(width, heigth);
  //160 600
}

使用regExp:

{
  const dimensionsStr = 'width=160,height=600';

  const matched = dimensionsStr.match(/=(.*?),(.*?)=(.*?)$/)
  //["=160,height=600", "160", "height", "600"]

  const width = parseInt(matched[1]),
        heigth = parseInt(matched[3]);

  console.log(width, heigth);
  //160 600
}