RegEx用于查找具有大于sign - in属性的输入值



这是一个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">

但是它在第二个title属性中的">"中中断。我怎样才能解决这个问题?

为什么不使用

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

则不那么复杂:只需在每个"输入"标记之后获取第一个"值"标记(贪婪量词)。然后获取值

注意:我在这里选择贪婪量词{1,}?而不是*,以确保value的下一个出现将被选中,而不是任何以后的出现。

但如前所述:这里可能有比使用正则表达式更好的解决方案,例如,如果您正在使用php (?我不知道你是否知道?)根据您使用的语言,您可能需要稍微更改regex表达式…

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

这是脆弱

它可以被破坏,规避和违反

使用它是危险的

祝所有忽视这些警告的人好运…

有很多问题会遇到,也有很多方法可以找出阴阳,但是如果你有一个格式良好的HTML... ... ...

<引用类>

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

如果你敢的话,你可以在这里乱搞。