RegEx获取没有值的HTML属性

时间:2016-01-20 11:30:39

标签: regex

例如我有HTML:

<html>
    <span href="" />
    <span href="" noname />
    <span noname />
    <span="sss" />
</html>

我想找到没有 =“”的每个属性。在此示例中,它将是:“noname”

我的尝试是:

<[A-Za-z]+^={1}.*[A-Za-z]+^\=].*>

但没有成功......

在这种情况下,第一个属性“span”是正常的,因此RegEx不应该找到它。只有这些在标签的中间。

1 个答案:

答案 0 :(得分:1)

您可以利用该属性的使用方式而无需使用值。

  1. 它之前有空格
  2. 它有一个空格或/>之后
  3. 根据以上所述,您可以使用RegEx \s([a-zA-Z]+)[\s/>]

    RegEx说明:

    1. \s:匹配空格字符
    2. ([a-zA-Z][a-zA-Z-]+):匹配以字母开头的单词,可以包含连字符-符号并将其添加到捕获的组中
    3. [\s/>]:匹配空格,/>
    4. 使用JavaScript进行演示:

      &#13;
      &#13;
      var str = `<html>
          <a href="">link</a>
          <span class="" noname >Lorem</span>
          <input required />
          <span id="sss" >More Content</span>
          </html>`;
      
      var regex = /\s([a-zA-Z][a-zA-Z-]+)[\s\/>]/g;
      
      var attributes = str.match(regex);
      document.body.innerHTML = attributes;
      &#13;
      &#13;
      &#13;