我正在使用 JavaScript RegExp 对 HTML 内容进行搜索突出显示。
为此,我正在使用:
data.replace( new RegExp("("+search+")", 'g'), "<b id='searchHighlight'>$1</b>" );
其中data
是整个 HTML 内容,search
是搜索字符串。
例如,在搜索时h
,它会突出显示单词(the、there 等)中的 h 以及诸如"<h1 id="title"> Something </h1>"
等标签中的实例。
我不能采用替代方法,因为我需要以相同的样式突出显示相同的 HTML 内容。
我已阅读以下解决方案:
var input = "a dog <span class='something'> had a </span> and a cat";
// Remove anything tag-like
var temp = input.replace(/<.+?>/g, "");
// Perform the search
var matches = new RegExp(exp, "g").exec(temp);
但是由于我需要在相同的 HTML 内容中突出显示搜索文本,所以我不能简单地去掉现有的标签。有什么方法可以在 RegExp 中进行包含和排除搜索,例如,我可以h
在“the”中突出显示"t<b id='searchHighlight'>h</b>e"
并且不允许"<h1 id="title">Test</h1>"
因此被破坏:"<<b id='searchHighlight'>h</b>1 id="title">Test</<b id='searchHighlight'>h</b>1>"
?
HTML 内容是静态的,如下所示:
<h1 id="title">Samples</h1>
<div id="content">
<div class="principle">
<h2 id="heading">
PRINCIPLE</h2>
<p>
FDA recognizes that samples are an important part of ensuring that the right drugs are provided to the right patients. Under the Prescription Drug Marketing Act (PDMA), a sales representative is permitted to provide prescription drug samples to eligible healthcare professionals (HCPs). In order for BMS to provide this service, representatives must strictly abide by all applicable compliance standards pertaining to the distribution of samples.</p></div>
<h2 id="heading">
WHY DOES IT MATTER?</h2>
<p>
The Office of Inspector General (OIG) recognizes that samples can have monetary value to HCPs and, when used improperly, may have implications under the Federal False Claims Act and the Federal Anti-kickback Act. To minimize risk of such liability, the OIG requires the clear and conspicuous labeling of individual samples as units that cannot be sold. BMS and its business partners label every sample package to meet this requirement. Additionally, the HCP signature statement acknowledges that the samples will not be sold, billed or provided to family members or friends.</p>
<h2 id="heading">
WHO IS YOUR SMaRT PARTNER?</h2>
<p>
SMaRT is an acronym for “Samples Management and Representatives Together”. A SMaRT Partner has a thorough understanding of BMS sample requirements and is available to assist the field with any day-to-day policy or procedure questions related to sample activity. A SMaRT Partner will also:</p>
<ul>
<li style="margin-left:22pt;"> Monitor your adherence to BMS’s sample requirements.</li>
<li style="margin-left:22pt;"> Act as a conduit for sharing sample compliance issues and best practices.</li>
<li style="margin-left:22pt;"> Respond to day-to-day sample accountability questions within two business days of receipt.</li>
</ul>
<p>
Your SMaRT Partner can be reached at 888-475-2328, Option 3.</p>
<h2 id="heading">
BMS SAMPLE ACCOUNTABILITY POLICIES & PROCEDURES</h2>
<p>
It is the responsibility of each sales representative to read, understand and follow the BMS Field Sample Accountability Procedures, USPSM-SOP-101. The basic expectations are:</p>
<ul>
<li style="margin-left:22pt;"> Transmit all sample activity by communicating your tablet to the host server on a <strong>daily</strong> basis.</li>
<li style="margin-left:22pt;"> Maintain a four to six week inventory of samples rather than excessive, larger inventories that are more difficult to manage and increase your risk of non-compliance.</li>
<li style="margin-left:22pt;"> Witness all HCP’s signatures to confirm request and receipt of samples.</li>
</ul>
</div>
内容都是分散的,而不是一个标签。所以 DOM 操作对我来说不是一个解决方案。