从具有相同类的多个元素中提取Javascript中的数字

时间:2016-09-07 20:31:42

标签: javascript regex numbers extract

我的页面中有不同的元素与同一个类。 所有这些元素都包含文本和数字。 我需要从所有元素中提取所有数字。

e.g。我有以下要素:



<div class="myelement">bla bla bla 123</div>
<div class="myelement">bla bla bla 456</div>
<div class="myelement">bla bla bla 789</div>
&#13;
&#13;
&#13;

..我需要分别提取123,456,789。 你能帮帮我吗?

非常感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

查找字符串中所有数字的一种解决方案是使用正则表达式/\d+/

var strings = Array.prototype.map.call(
  document.getElementsByClassName('myelement'),
  function(element) {
    return element.innerText;
  }
);

var numbers = [];
var regex = /\d+/;

strings.forEach(function(item) {
  regex.exec(item).forEach(function(result) {
    numbers.push(+result); // convert to a number with + prefix
  });
});

console.log(numbers);
<div class="myelement">bla bla bla 123</div>
<div class="myelement">bla bla bla 456</div>
<div class="myelement">bla bla bla 789</div>

答案 1 :(得分:0)

我的提案基于Array.map

  • document.getElementsByClassName('myelement')返回HTMLCollection
  • 对于此集合的每个元素,调用map函数以将每个元素转换为数组元素
  • 每个单个文本只返回数字

结果是一个数组。

var result = [].map.call(document.getElementsByClassName('myelement'), function(ele, index) {
  return  ele.textContent.replace(/\D*/, ''); // remove all non digit
});
console.log(result)
<div class="myelement">bla bla bla 123</div>
<div class="myelement">bla bla bla 456</div>
<div class="myelement">bla bla bla 789</div>

答案 2 :(得分:0)

另一种解决方法:

var results = []
els = document.getElementsByClassName('myelement');
[].forEach.call(els, function(el) {
    results.push(el.innerHTML.match(/\d+/)[0])
});
results.forEach(x => console.log(x));
<div class="myelement">bla bla bla 123</div>
<div class="myelement">bla bla bla 456</div>
<div class="myelement">bla bla bla 789</div>

答案 3 :(得分:0)

使用JQuery,您可以循环每个myelement,将字符串拆分为字符,并使用isNumeric将数字放入数组中。

$