Jquery Regex在htmlstring中查找Sentence匹配

时间:2017-09-26 11:42:04

标签: jquery regex replace

我希望找到“原始成本基础为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>'

4 个答案:

答案 0 :(得分:0)

您要求使用正则表达式解决方案,但也有replace()方法。

&#13;
&#13;
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;
&#13;
&#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');

上面的代码段与开场tdfont标记相匹配,无论字体标记内是什么,都将它们放在&#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)

&#13;
&#13;
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;
&#13;
&#13;