Javascript正则表达式匹配

时间:2018-01-23 22:36:23

标签: javascript replace match

大家好我试图获取包含多个节点的类的所有数字...只想获得10位数字。我非常纠结,希望有人帮助我。 *我还想知道在一个长文本中是否提取了所有找到的匹配而不仅仅是一个

var lista = document.querySelectorAll(".dat");
for(i in lista){
    if(lista[i].textContent.match(/.*([0-9]{10}).*/, $1)){
        console.log(lista[i].textContent + "\n") 
    }
}

2 个答案:

答案 0 :(得分:0)

这会有用吗?如果找到匹配项,.match将返回一个数组。数组中的第一项是匹配的字符串,然后每个其他项都是每个捕获组。所以你的号码捕获组将位于第一位:

var lista = document.querySelectorAll(".dat");
for (var i = 0; i < lista.length; i++) {
    var match = lista[i].textContent.match(/.*([0-9]{10}).*/);
    if (match && match[1]) console.log(match[1]);
}
<span class="dat">text 9023548932</span>
<span class="dat">9023548932 text text</span>
<span class="dat">text text 9023548932</span>
<span class="dat">te 9023548932 xt</span>
<span class="dat">tex 9023548932 text text</span>

答案 1 :(得分:0)

您可以使用/\d{10}/并检查数组中的0项,而不是项1

&#13;
&#13;
Array.from(document.querySelectorAll(".dat")).forEach(item => {
    var match = item.textContent.match(/\d{10}/);
    if (match && match[0]) console.log(match[0]);
})
&#13;
<span class="dat">text 9023548932</span>
<span class="dat">9023548932 text text</span>
<span class="dat">text text 9023548932</span>
<span class="dat">te 9023548932 xt</span>
<span class="dat">tex 9023548932 text text</span>
&#13;
&#13;
&#13;