使用来自html字符串的id获取名称的正则表达式

时间:2018-03-18 05:30:10

标签: javascript node.js regex

我正在尝试使用正则表达式解析html字符串。

完整的html加载到字符串变量中,我知道元素的id。如何获取该特定元素的名称

以下示例中的

ID为field-options-Real-fc,预期结果为f4186d62184e277e2968ece68da25a860 任何人都可以帮助我使用正则表达式来匹配名称吗? value属性也是唯一的,html格式保持不变。

   <li class="field-choice field-choice-radio ">
      <input type="checkbox"  data-disable-children="true" data-validation-count="1..6" data-validation-count-message="Must specify within 1 and 6 items." 

name="f4186d62184e277e2968ece68da25a860" 

value="131233102" 

id="field-options-Real-fc" class=""/>
      <label for="field-options-Real-fc">
        <span>Real FC</span>
      </label>
    </li>

4 个答案:

答案 0 :(得分:1)

使用像BeautifulSoup(python)

这样的XML解析器会更好
import BeautifulSoup
soup = BeautifulSoup.BeautifulSoup(your_html_string)
elem = soup.find(id="field-options-Real-fc")
name = elem['name']

答案 1 :(得分:0)

我可能会在这里感到困惑 - 但你可以在不使用正则表达式的情况下找到name属性。 尝试此流程以检索name属性的值:

var element = document.getElementById("field-options-Real-fc"); element.getAttribute("name");

这就是你追求的目标吗?

答案 2 :(得分:0)

您可以使用正向前瞻来查找ID,然后使用捕获组($1)来提取ID本身,在下一个双引号处终止该组。

(?=id=")id="(.*)"\s

DEMO

修改:这仍适用于您的latest revision

DEMO (Revised for Rev#4)

答案 3 :(得分:0)

要涵盖所有(两个)可能的订单或者attrs,请使用lookahead:

/\<(?=(?:[^>]|"[^"]*")*id="field-options-Real-fc")(?:[^>]|"[^"]*")*name="([^"]*)"/
此处需要

(?:[^>]|"[^"]*")以禁止&#39;&gt;&#39;字符除非引用。

https://regex101.com/r/aS4tDr/3