RegEx:在同一元素中包含属性检查

时间:2012-10-02 10:15:38

标签: c# .net regex

最终目标 ...检索具有特定属性/值的一组DIV并更新元素类型并操纵属性和值...

我想使用RegEx来测试以下场景(我认为基于上述目标是正确的)

  • 每个开放DIV
  • 包含attribute-to-check属性
    • 该属性可能或可能是第一个属性
  • ,其值包含value-contains
    • 该值可能或可能是属性中的第一个值(允许将来扩展)
  • 找到 关闭DIV
    • 此DIV本身可能包含其他DIV - 包括其他也将匹配的DIV

那么我尝试了什么? ...使用测试脚本:

<p>test1</p>
<DIV attribute-to-check='notvalid'>
  test2
</DIV>
<p>test3</p>
<DIV attribute-to-check='value-contains:2012-12-12' class='test4'>
  test5
</DIV>
<p>test6</p>
<DIV attribute-to-check='value-contains:2012-01-01' class='asd'>
  test6
</DIV>
<p>test7</p>

我已经达到以下RegEx ......

<?DIV.*?attribute-to-check='value-contains:.*?>(.*?)</DIV>

但这会带回来

string 1: "<DIV attribute-to-check='notvalid'>test2</DIV>test3<DIV attribute-to-check='value-contains:2012-12-12' class='test4'>test5</DIV>"

string 2: "<DIV attribute-to-check='value-contains:2012-01-01' class='asd'>test6</DIV>"

我怀疑它会在string1中带回test2,因为它有一个开头的div,其属性要检查,但的值无效?所以我想知道我是否得到第一个DIV然后是任意数量的字符,直到它找到任何其他attribute-to-check='value-contains:然后关闭DIV之后?

我正在努力从这一点开始,并且会感谢来自社区的任何帮助者:)

由于 迪伦

1 个答案:

答案 0 :(得分:0)

Don't use regex for HTMLNoseriouslydon't

JQuery有很棒的选择器语法来实现你想要的,真的。查看here,它会向您展示如何在文档顶部执行您想要的操作。

例如:

$('div[attribute-to-check|="value-contains:"]')

将产生具有所需属性/值约束的div。