我希望找到“原始成本基础为50万美元”的匹配,并将其替换为周围的包装跨度标签。文本将出现在任何标签内,如td,font等。只需找到它并用span包裹?
字符串:
var str = '<td><font style="font: 8pt arial, helvetica, sans-serif">Original cost basis <b>$0.5</b> million</font></td>';
预期结果:
'<td><font style="font: 8pt arial, helvetica, sans-serif"><span>Original cost basis <b>$0.5</b> million<span></font></td>'
答案 0 :(得分:0)
您要求使用正则表达式解决方案,但也有replace()
方法。
var str = '<td><font style="font: 8pt arial, helvetica, sans-serif">Original cost basis $0.5 million</font></td>';
var res = str.replace("Original cost basis $0.5 million", "My new replacement")
console.log(res);
&#13;
replace()
方法的工作原理如下:
replace('string to find', 'string that is used to replace the found string');
W3文档here
答案 1 :(得分:0)
您可以使用.replace()
方法:
var str = '<td><font style="font: 8pt arial, helvetica, sans-serif">Original cost basis $0.5 million</font></td>';
var res = str.replace(/(<td><font.*>)(.*)(<\/font><\/td>)/, '$1<span>$2</span>$3');
上面的代码段与开场td
和font
标记相匹配,无论字体标记内是什么,都将它们放在&#39;组中。由$1
引用。然后,它会插入span
标记。然后它放入你试图用span
包裹的字符串,由$2
引用。然后它插入结束/span
标记。最后,它将结束/font
和&#39; / td&#39;最后的标签,由$3
引用。
赛前:
<td><font style="font: 8pt arial, helvetica, sans-serif">Original cost basis $0.5 million</font></td>
赛后和替换:
<td><font style="font: 8pt arial, helvetica, sans-serif"><span>Original cost basis $0.5 million</span></font></td>
链接到Mozilla文档here:
答案 2 :(得分:0)
根据您对我之前回答的评论,似乎问题不在于我所阅读的内容,并且HTML无法保证在此结构中。
相反,我将假设字符串位于HTML树的叶子(最低部分)中。试试这个:
str.replace(/>([^<]+)</, '<span>$1<\span>');
答案 3 :(得分:0)
var str = '<td><font style="font: 8pt arial, helvetica, sans-serif">Original cost basis $0.5 million</font></td>';
var replacetext= str.replace(/Original cost basis $0.5 million/g, "New text");
alert(replacetext);
document.write(replacetext);
&#13;