代码之家  ›  专栏  ›  技术社区  ›  Clever

Javascript regexp匹配[关闭]

  •  -1
  • Clever  · 技术社区  · 6 年前

    大家好,我正在尝试获取包含多个节点的类的所有数字。。。只想得到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 回复  |  直到 6 年前
        1
  •  0
  •   CRice    6 年前

    这样行吗? .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>
        2
  •  0
  •   Get Off My Lawn    6 年前

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

    Array.from(document.querySelectorAll(".dat")).forEach(item => {
        var match = item.textContent.match(/\d{10}/);
        if (match && match[0]) console.log(match[0]);
    })
    <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>