我对正则表达式比较陌生,但我的目标是从不包括 <br>
的字符串中去除所有 html 标签s 和 <a>
带有 class='user' 的标签。我想使用此正则表达式从 contentedittable 字段中清除不需要的 html 垃圾。
希望你们中的一位正则表达式大师可以帮助...
这是一个测试示例: http://gskinner.com/RegExr/?2tpai
我想我已经接近了,但是 a class='user' 的结束标记目前在需要时仍被选为垃圾。
最佳答案
正式来说你can't parse HTML with regex ,因为 HTML is not a regular language .另见 Can you provide some examples of why it is hard to parse XML and HTML with a regex?对于一些噩梦 Material 。
毫无疑问,您可以想出一些适用于“大多数”情况或“合理”情况的正则表达式,但如果您通过正则表达式清理用户输入,这还不够。距离尝试通过精心设计的文本替换和转义来替换 SQL 参数不到一百万英里;无论您多么聪明,正确的答案是使用不同的方法,因为一些弱点仍然存在。
在这种情况下,该方法将使用 HTML 解析库来读取文本,然后删除 <br>
和 <a>
来自已解析 DOM 的标签。 (这比尝试从原始文本中删除一系列字符要强大得多,并且可能还会创建更易于理解的源代码!)。事实上,由于您可能在客户端中谈论 JS,您已经拥有可用的 DOM,由浏览器预先解析,因此这将是一个简单的操作。
如果您不熟悉 JavaScript 的 DOM 操作方法,我认为 quirksmode intro平易近人且信息丰富。
关于javascript - 正则表达式去除所有 html 标签,不包括 <br> & <a class ='user' ></a>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6027643/