我想使用正则表达式将<font>
元素转换为<span>
元素:
[some strings...]<span [something]></span><font ...>[sometext]</font>[some strings...]
[some strings...]<span [something]>[sometext]</span>[some strings...]
注意:输入/输出是一个字符串。
很快,我想删除<font>
元素并将其内容移动到<span>
元素中,保留<span>
元素的属性。
我试过这个:
const rx = /<span(.*?)><\/span>([^<\\s]+?|\\s*)<font(?:\\s+[^>]*)?>(.*?)<\/font>/gi;
inputStr.replace(rx, function(match, p1, p2, p3) { return `${p2}<span${p1}>${p3}</span>`; });
但它不起作用。
任何人都可以帮助我吗?
答案 0 :(得分:0)
如果可能的话,使用任何ID或类选择器,我在这里使用了标签名称,例如,如果你有一个Id选择器,那么从代码中删除[0]。 这个或有一些修改应该适合你
document.getElementsByTagName("font")[0].replaceWith('<span>' + document.getElementsByTagName("font")[0].innerHTML +'</span>')
使用Jquery,
$("YOUR_DOM_SELECTOR").replaceWith('<span>' + $("YOUR_DOM_SELECTOR").html() +'</span>')
答案 1 :(得分:0)
我也同意@skyboyer,这不是最好的方法,但是如果你只能使用regexp或者这是一次性任务,你可以使用一个类组指定来获取所有不是&#的字符。 34;&gt;&#34;,这样你可以获取标签范围的所有参数并在字体中使用它:
var text = 'Some text... <span style="color:red"></span><font style="margin:10px">Hi there!</font> other text <span style="color:blu"></span><font style="margin:10px">doh!</font> final text';
console.log(text.replace(/<span([^>]*)><\/span><font[^>]*>(.+?)<\/font>/gi,'<span$1>$2</span>'));
编辑以匹配其他标签(显然除了其他标签)