RegEx查找具有大于号的属性的输入的值

时间:2015-09-25 11:46:13

标签: regex regex-lookarounds

这是一个html代码段:

<input value="1" style="width: 90%;" type="text"></th><th style="cursor: default;" class=" filter">
<input value="2" class="tooltip" style="font-size: 0.8em; width: 90%;" placeholder="Datum" title="Datumsfilter 
Mögliche Operatoren: < | > | <= | >= | <> < | > | <= | >= | <> | .. 
Beispiele: 
2016 | 2016-03 | 2016-03-24 (nur Jahr[-Monat[-Tag]]) 
>2015-02 | <=2016-09-15 (ab/bis angegebenem Jahr[-Monat[-Tag]] inkl./exkl.)
2016-03..2016-04-15 (angegebener Bereich) 
<>2016-03 (ungleich)" type="text">

我必须提取值,type属性可能是任何顺序。

/(?=<input.*?type="text"[^>]*?>).*?value="([^"]*)/

适用于

<input value="1" style="width: 90%;" type="text"></th><th style="cursor: default;" class=" filter">

但它打破了“&gt;”在第二个标题属性中。我怎么解决这个问题?

2 个答案:

答案 0 :(得分:-2)

为什么不使用

/\<input.{1,}?value="(.{1,}?)"/

它不那么复杂:只需在每个“输入”-tag之后获取第一个“value”-tag(贪婪量词)。然后得到价值。

注意:我选择了贪婪量词{1,}?而不是*来确保下次出现的value将被选中,而不会在以后出现。

但如上所述:在这里使用正则表达式可能有更好的解决方案,例如,如果你使用的是php(?我不知道你是否这样做?)。根据您使用的语言,您可能需要更改一下regex-expression ...

https://regex101.com/r/kB3wR2/1

答案 1 :(得分:-2)

这是脆弱的 ...

可以破坏,规避和违反 ......

危险使用它......

Good luck for all who ignore these warnings ...

有很多问题需要解决,以及如何挑选出来的ying yang,但如果你有良好的HTML ...... ......

  

您可以尝试:<input(?: (?:value=(['"])(?<value>(?:(?!\1).)*)\1|\w+=(['"])(?:(?!\3).)*\3))*>

如果你敢的话,你可以mess around with it here