Javascript 如何替换html内容中的文本而不是样式属性

Javascript 如何替换html内容中的文本而不是样式属性,javascript,php,jquery,html,regex,Javascript,Php,Jquery,Html,Regex,我想突出显示html内容中的文本,而不使用jquery影响样式属性 我有一个div中的html内容,我想突出显示该特定div内容中的搜索关键字,但它不应该替换样式属性 <div class='resume_details_list'> <p style="margin:0pt;"> Over 7.8+ years of experience <span style="font-size:10pt;">complete deve

我想突出显示html内容中的文本,而不使用jquery影响样式属性

我有一个div中的html内容,我想突出显示该特定div内容中的搜索关键字,但它不应该替换样式属性

    <div class='resume_details_list'>
     <p style="margin:0pt;">
        Over 7.8+ years of experience <span style="font-size:10pt;">complete development life cycle - Requirement, Program design, Coding, Testing, Deployement,Stylesheet, margin Help and Documentation with Database Structure design. Having Onsite/Offshore work experience.</span>
     </p>
    </div>

超过7.8年的完整开发生命周期经验-需求、程序设计、编码、测试、部署、样式表、边距帮助和数据库结构设计文档。具有现场/海上工作经验。

现在我想突出显示关键字“style”或“margin”,为此我使用下面的代码

var selector = ".resume_details_list";
var searchTerm = 'style';
var searchTermRegEx = new RegExp(searchTerm, "ig");
var matches = $(selector).text().match(searchTermRegEx);
if (matches != null && matches.length > 0) {
    if (searchTerm === "&") {
           searchTerm = "&amp;";
           searchTermRegEx = new RegExp(searchTerm, "ig");
    }

    $(selector).html($(selector).html().replace(searchTermRegEx, "<span class='match'>" + searchTerm + "</span>"));
}
var选择器=“.resume\u details\u list”;
var searchTerm='style';
var searchTermRegEx=新的RegExp(searchTerm,“ig”);
var matches=$(选择器).text().match(searchTermRegEx);
if(matches!=null&&matches.length>0){
if(searchTerm==“&”){
searchTerm=“&;”;
searchTermRegEx=新的RegExp(searchTerm,“ig”);
}
$(选择器).html($(选择器).html().replace(searchTermRegEx,“+searchTerm+”);
}
现在,无论“样式”出现在哪里,它都会突出显示文本,但它破坏了我的html内容。但我不想替换样式内的样式标记或css属性

请帮我解决我的问题。提前感谢。

您可能会使用此正则表达式
searchTerm+'(?![=\\-;:“\\'])”

var选择器=“.resume\u details\u list”;
var searchTerm='style';
var searchTermRegEx=new RegExp(searchTerm+'(?![=\\-;:“\\']),“ig”);
var matches=$(选择器).text().match(searchTermRegEx);
if(matches!==null&&matches.length>0){
if(searchTerm==“&”){
searchTerm=“&;”;
searchTermRegEx=新的RegExp(searchTerm,“ig”);
}
$(选择器).html($(选择器).html().replace(searchTermRegEx,“+searchTerm+”);
}

超过7.8年的完整开发生命周期经验-需求、程序设计、编码、测试、部署、样式表、边距帮助和数据库结构设计文档。具有现场/海上工作经验。


我已将正则表达式更改为

var searchTermRegEx = new RegExp('(?![^<]+>)' + searchTerm , 'gi');
var searchTermRegEx=newregexp('(?![^')+searchTerm,'gi');

正则表达式检查不属于HTML标记的文本。它将只检查文本。它可以满足我的要求。

只需将
$(选择器).HTML($(选择器).HTML()
替换为
$(选择器).HTML($(选择器).text()
。为什么不使用?如果搜索词是html标记中的其他内容,例如仅是属性名称的一部分、标记名称或属性值或其中的一部分,则这将不起作用。您的正则表达式必须确保在<>之间不匹配任何内容。尝试创建一个,但失败:/Hi Siam,感谢您的响应。如果我们尝试使用关键字“mar”gin“它不起作用及其附加样式属性。@Hareesh检查更新的答案。希望它现在可以正常工作:-)@Siam它可以用于某些场景,如“页边距顶部”、“页边距左侧”属性,但对“页边距”不起作用:)@Hareesh是的,可以。您检查更新的答案(regex)了吗?:)