Javascript正则表达式,用于去除选择性html标记
Javascript regex to strip selective html tags
我正在尝试使用regex从字符串中剥离所有(除了某些)html标记。我目前正在尝试的内容如下:
var a = "<pre><code><p>This is a <span>test</span></p></code></pre>";
var b = a.replace(/('<|'<'/)[^'>,p,li,br,b]*'>/ig,"");
但是b的值作为"<pre><p>This is a <span>test</span></p></pre>"
返回
似乎任何包含[>,p,li,br,b]的单个实例的标签都没有被删除,因为这里所有的pre
、span
和p
都包含字符p
。但是,我只想忽略[^'>,p,li,br,b]
中的确切字符。
我期望的输出是"<p>This is a test</p>"
。
我做错了什么?
var a = "<pre><code><p>This is a <span>test</span></p></code></pre>";
var b = a.replace(/'<(?!'/?(p|li|br|b)[ >])[^>]*'>/ig,"");
只有当正则表达式后面没有要保留p
、li
、br
、b
的标记名之一(后面跟着空格或关闭>
,这样它就不会认为<pre>
是<p>
)时,该正则表达式才会匹配前导<
或</
。
然后,它将所有内容匹配到结束的>
。
看看这个答案。
也就是说,方括号[]
只匹配单个字符,而不是单词——有关您正在做什么的更多信息,请参阅此答案的底部。相反,您需要使用括号(?:p|li|br|b)
来匹配单词——?:
用于避免捕获。此外,括号将出现在方括号之外。
由于你使用的是阴性匹配,你可能希望查看一下周围的情况;特别是关于积极和消极的观察。
[^'>,p,li,br,b]
翻译为不是>
不是,
不是p
不是,
不是l
不是i
不是,
不是b
不是r
不是,
不是b
。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何设置html元素填充的动画
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何编写HTML输入的JS内联
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 使用javascript将动态表从一个html页面打印到另一个html页
- 通过javascript重定向html传递php变量
- 如何使Javascript动态html表及其上的事件
- 在chrome.tabs.onCreated之后加载HTML页面
- 如何在vs2002中调试html页面
- 如何使用javascript或html下载PDF格式的填写表单
- 视频HTML没有'无法在Internet Explorer 11上工作
- HTML表单提交时未执行外部函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 使用angular重定向到html页面
- 分析高度属性时出现意外值{{specs.height}}.index.html
- Javascript正则表达式,用于去除选择性html标记
- node.js可以选择性地引入到用普通PHP/js/CSS/HTML构建的web应用程序中吗
- HTML标记被选择性地剥离