javascript - 除了 p 标签之外,从 JavaScript 中的文本中去除 Html?

标签 javascript

我需要使用 JavaScript 更改 RichEditor 和 TextEditor 模式,现在我需要将 Html 转换为实际上仍处于 Html 编辑器模式的文本,所以我只需要 p 标签,但其他 Html 可以被剥离。

最佳答案

正则表达式替换(全局,不区分大小写):

</?(?:(?!p\b)[^>])*>

用空字符串。

解释:
<          # "<"
/?         # optional "/" 
(?:        # non-capture group
  (?!      #   negative look-ahead: a position not followed by...
    p\b    #     "p" and a word bounday
  )        #   end lock-ahead
  [^>]*    #   any char but ">", as often as possible
)          # end non-capture group
>          # ">"

这是将正则表达式应用于 HTML 可以实际工作的少数情况之一。

有些人可能会反对并说在属性值中使用文字“<”实际上并未被禁止,因此可能会破坏上述正则表达式。他们是对的。

在这种情况下,正则表达式会中断,替换下划线部分:
<p class="foo" title="unusual < title">
                              ---------

如果您的输入可以实现这样的事情,那么您可能必须使用更高级的工具来完成这项工作 - 解析器。

关于javascript - 除了 p 标签之外,从 JavaScript 中的文本中去除 Html?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/828572/

相关文章:

javascript - Angular2 - NgModule 的提供程序无效,仅允许提供程序和类型的实例

javascript - Angular JS 中的 Lodash - 获取 TypeError : Object function lodash(value)

javascript - 无法从 xpage 上选项卡式面板中的编辑框中读取值

javascript - Meteor 自定义创建用户表单

javascript - 防止在 jeditable 触发器后换行

javascript - 在 Javascript(但不是 Node)中,我如何划分两个 Uint8Arrays?

javascript - 使用Web Worker的最大HTTP请求数

javascript - Babel.js 支持 ES6 Object.observer() 方法吗?

javascript - 从多个 div 元素过滤时显示自定义消息在 JavaScript 中没有返回结果

javascript - Superfish 菜单在 IE9 中显示结构损坏,在 Chrome 中工作正常