正则表达式以排除模式中的特定模式

时间:2016-06-22 13:34:50

标签: javascript regex

我想根据正则表达式选择html属性。 Follwing是基于以下HTML标记的正则表达式匹配的字符串。

     colspan="2"
     bgcolor="#FFFFFF"
     height="28"
     psdtyle="font-stretch: normal; font-size: 12px; line-height: 1.5;"
     align="center"
     style="word-wrap: break-word; margin: 5px 0px;"
     size="2"

((\ w +)=“[a-zA-Z# - :0-9;] *”)

现在真正的问题是我想排除colspan,即colspan =“2”不应该匹配。

  <td colspan="2" bgcolor="#FFFFFF" height="28" psdtyle="font-stretch: normal; font-size: 12px; line-height: 1.5;">
     <p align="center" style="word-wrap: break-word; margin: 5px 0px;"><font size="2">Shoulder</font></p>
  </td

2 个答案:

答案 0 :(得分:3)

您可以在attributes循环中迭代元素for,使用if条件排除colspan属性

var td = document.querySelector("tr td");
var attrs = td.attributes;
for (var i = 0; i < attrs.length; i++) {
  if (attrs[i].name !== "colspan")
  console.log(attrs[i].name, attrs[i].value)
}
<table>
  <tr>
      <td colspan="2" bgcolor="#FFFFFF" height="28" psdtyle="font-stretch: normal; font-size: 12px; line-height: 1.5;">
     <p align="center" style="word-wrap: break-word; margin: 5px 0px;"><font size="2">Shoulder</font></p>
  </td>
    </tr>
  </table>

答案 1 :(得分:1)

我认为这应该可以解决问题:

((\b(?!colspan\b)(\w+))\s?=\s?["'][a-zA-Z#-:0-9 ;]*["'])