说我有以下html作为text / string:
<html>
<a><span>some text</span></a>
<a attr='attr_value'><b>Some bold text</b></a>
<html>
如何仅删除所有<a></a>
标记(包含或不包含属性),以便获得以下结果:
<html>
<span>some text</span>
<b>Some bold text</b>
<html>
纯javascript请(没有JQuery),也许替换+正则表达式(?)
答案 0 :(得分:1)
最简单的是:
str.replace(/(<a>)|(<a attr='attr_value'>)|(<\/a>)/g, "");
我认为我的rgx是正确的,但如果没有尝试使用http://gskinner.com/RegExr/
答案 1 :(得分:0)
您应该能够使用以下正则表达式删除<a>
标记:
/</?a[^>]*>/
/ ... /
- regex delimeters < ... >
- 匹配标记本身的开头和结尾/?
- 匹配可选的“/”以处理结束标记的开头a
- 确保您已捕获<a>
代码[^<]*
- 匹配任何未关闭代码的字符中的零个或多个由于HTML <a>
标记必须先关闭才能开始另一个HTML标记,因此您可以使用“not not sign”模式([^>]
)来匹配其中的任何字符。标签
首先将其设置为正则表达式变量,或者在替换中将其包含在内:
var regexATagPattern = new RegExp("</?a[^>]*>", "g");
var new_string = some_string.replace(regexATagPattern, "");
。 。 。要么 。 。
var new_string = some_string.replace(/<\/?a[^>]*>/g, "");
(注意两种方法之间如何创建模式的差异。)
注意:您可能遇到问题的 ONLY 情况是您拥有包含转义“&gt;”字符串值的属性在里面。如果这是一个问题,那么你必须要复杂得多。