我似乎无法将一个工作模式放在一起,以禁止除strong和em标记之外的所有html标记。
我不想解析html,只是想给用户一个不接受输入的警告。我知道这并不是所有浏览器都支持,但我会喜欢纯粹的HTML解决方案,因为我已经有了一个可用的JS解决方案,但我不想分层用户体验。
<input name="user_input" pattern="^(?!<[^>]*>).*$" />
所以允许标签:强大,em 使用所有其他标签应该使结果为假
任何人都能破解这个吗?
KR
修改
<input type="text" pattern="((?!<(?!\/?(strong|em))[^>]*>).)*">
似乎可以解决这个问题。谢谢你的帮助!
答案 0 :(得分:1)
您可以使用否定前瞻(?!)
来实现此目的。
匹配整个对的示例正则表达式字符串:
<(?!\/?strong|\/?em)[^>]*>.*(?:<\/.*?>)?
较短的正则表达式,仅与第一个标记匹配
<(?!\/?(strong|em))[^>]*>
如果HTML标记包含EXCEPT strong或em,则匹配将通过。
因此,如果match = $ true,您可以拒绝输入并向用户发出警告。