正则表达式排除包含字符串模式的匹配

时间:2017-02-22 12:12:53

标签: regex

我试图缩小我的RegEx以忽略type="submit"的表单元素。我只想选择直到部分class="*"的元素部分,但仍然忽略如果type ="提交"在课前或课后。

到目前为止我的正则表达式:

(<(?:input|select|textarea){1}.*[^type="submit"]class=")(((?!form\-control)[a-zA-Z0-9_ -])*")

测试用例: 第一行应该匹配到类的结尾,而第二行应该被忽略。

<input type="text" name="name" id="test" class="example-class" max-length="7" required="required">
<input type="submit" class="btn-primary" value="send">

这可以吗?

2 个答案:

答案 0 :(得分:0)

感谢您的评论。答案是前方的负面看法。

在正则表达式的开头添加(?!.*type="submit.*)似乎已经给了我想要的结果。

工作正则表达式:

(?!.*type="submit.*)(<(?:input|select|textarea).*class=")(((?!form\-control)[a-zA-Z0-9_ -])*")

答案 1 :(得分:0)

(<(?:input|select|textarea)\s((?!type="submit")[\w\-]+\b="[^"]*"\s?)*>)

此表达式绑定到单个标记 最好避免像.*这样的表达式,因为它可以更进一步,匹配一个字符串,该字符串将在一个标记内开始,最终在另一个标记内。