Javascript 如何使用正则表达式替换标记之间的文本
我想替换一个字符串中的一些文本,该字符串表示一个div标记,该标记可能包含也可能不包含样式和类属性。比如说,Javascript 如何使用正则表达式替换标记之间的文本,javascript,regex,Javascript,Regex,我想替换一个字符串中的一些文本,该字符串表示一个div标记,该标记可能包含也可能不包含样式和类属性。比如说, var s = "<div style='xxx' class='xxx'>replaceThisText<div> var s=“replaceThistText 如果只是标签,我相信我可以这样做: str = str.replace(/<div>[\s\S]*?<\/div>/, '<div>' + newText+ '
var s = "<div style='xxx' class='xxx'>replaceThisText<div>
var s=“replaceThistText
如果只是标签,我相信我可以这样做:
str = str.replace(/<div>[\s\S]*?<\/div>/, '<div>' + newText+ '<\/div>');
str=str.replace(/[\s\s]*?/,“”+newText+“”);
但是如何考虑属性呢?用字符串作为HTML内容生成一个临时元素,然后在更新内容后获取其中的div以更新内容获取临时元素的HTML
var s=“replaceThisText”;
//创建一个临时div元素
var temp=document.createElement('div');
//将内容设置为字符串
temp.innerHTML=s;
//在临时元素中获取div
//并更新div中的内容
temp.querySelector('div')。innerHTML='newText';
//获取中的当前HTML内容
//临时部门
console.log(temp.innerHTML)
使用字符串作为HTML内容生成一个临时元素,然后在更新内容后获取其中的div以更新内容获取临时元素的HTML
var s=“replaceThisText”;
//创建一个临时div元素
var temp=document.createElement('div');
//将内容设置为字符串
temp.innerHTML=s;
//在临时元素中获取div
//并更新div中的内容
temp.querySelector('div')。innerHTML='newText';
//获取中的当前HTML内容
//临时部门
console.log(temp.innerHTML)
Regex永远不会是解析html内容的好决定。考虑下面的简短解决方案,使用<代码> DOMParser < /Cord>对象(对于支持<代码> DOMParser >代码>的浏览器,请参阅:
var s=“replaceThisText”,
tag=(new DOMParser()).parseFromString(s'text/html').querySelector('.xxx');
tag.textContent='newText';//替换为新文本
console.log(tag.outerHTML);//输出带有替换内容的初始标记表示形式
Regex永远不会是解析html内容的好决定。考虑下面的简短解决方案,使用<代码> DOMParser < /Cord>对象(对于支持<代码> DOMParser >代码>的浏览器,请参阅:
var s=“replaceThisText”,
tag=(new DOMParser()).parseFromString(s'text/html').querySelector('.xxx');
tag.textContent='newText';//替换为新文本
console.log(tag.outerHTML);//输出带有替换内容的初始标记表示形式
将其解析为DOM元素,然后更改.innerHTML
或.textContent
。将其解析为DOM元素,然后更改.innerHTML
或.textContent
。除了使用查询外,临时firstChild.innerHTML='newText'
如何Y选择器
?@SpencerWieczorek:如果内容中没有前导空格或文本,也可以这样做……否则它可能是textnode除了使用查询选择器
,temp.firstChild.innerHTML='newText'
之外,如果内容中没有前导空格或文本,也可以这样做……或者rwise它可能是textNode