html5输入的高级正则表达式模式

时间:2014-02-04 03:29:09

标签: html regex html5

我似乎无法将一个工作模式放在一起,以禁止除strong和em标记之外的所有html标记。

我不想解析html,只是想给用户一个不接受输入的警告。我知道这并不是所有浏览器都支持,但我会喜欢纯粹的HTML解决方案,因为我已经有了一个可用的JS解决方案,但我不想分层用户体验。

<input name="user_input" pattern="^(?!<[^>]*>).*$" />

所以允许标签:强大,em 使用所有其他标签应该使结果为假

任何人都能破解这个吗?

KR

修改

<input type="text" pattern="((?!<(?!\/?(strong|em))[^>]*>).)*">

似乎可以解决这个问题。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用否定前瞻(?!)来实现此目的。

匹配整个对的示例正则表达式字符串:

<(?!\/?strong|\/?em)[^>]*>.*(?:<\/.*?>)?

较短的正则表达式,仅与第一个标记匹配

<(?!\/?(strong|em))[^>]*>


如果HTML标记包含EXCEPT strong或em,则匹配将通过。

因此,如果match = $ true,您可以拒绝输入并向用户发出警告。


Regex101 demo