JavaScript正则表达式解释

4
我将使用以下正则表达式来验证文本区域中的任何HTML标签, 如果有人在文本区域中输入任何HTML标签,我必须显示验证消息,
使用的正则表达式:
/<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/

有人能解释一下上面的正则表达式吗?我正在将其用于验证文本区域中的任何HTML标签,它适用于所有情况,但以下情况未经过验证:

</p> 被传递而没有进行任何客户端验证,我不希望用户甚至输入闭合的HTML标签。


它基本上尝试匹配一个开放标签。 - Ja͢ck
我应该编辑哪些正则表达式才能不接受闭合标签? - Raghav
你只是想限制<和>字符吗?你接受的答案将匹配类似于“if 1 < 2 then 55 > 10”的句子。 - magritte
不要忘记在服务器端过滤输入/输出。如果您将数据存储并显示在页面上,仅使用JS进行此类过滤是不够的。 - loler
2个回答

3
我会这样进行此类验证:
var d = document.createElement('div');
d.innerHTML = 'whatever </p>';

if (d.getElementsByTagName('*').length) {
    alert("You have typed some HTML");
}

</p> 只是一个例子......我的正则表达式允许所有的闭合 HTML 标签.....即使字符串只包含闭合 HTML 标签,我也不想允许它们。 - Raghav
这是一个相当不错的想法,但仍然无法处理包含错误顺序的<和>字符的句子。不过我不确定他能做些什么。 - magritte
@magritte 你能给一个具体的例子吗? - Ja͢ck
嘿,杰克,没问题 - 我在问题的评论中放了一些内容,例如“如果1 < 2,则55>10”,你可以想象他们可能正在输入一个包含数学计算的句子。 - magritte

1
请尝试 -
使用正则表达式限制HTML标签 -
/([\<])([^\>]{1,})*([\>])/i

or

/<(.|\n)*?>/g

示例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接