我正在使用JavaScript RegExp来在HTML内容中进行搜索高亮。
为此,我使用以下方法:
data.replace( new RegExp("("+search+")", 'g'), "<b id='searchHighlight'>$1</b>" );
其中data
代表整个HTML内容,search
代表搜索字符串。
当搜索例如h
时,它会在单词中(the,there等)以及标签中的实例(例如"<h1 id="title"> Something </h1>"
)中突出显示h。
我不能采用其他方法,因为我需要用相同的样式突出显示相同的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中执行包含和排除搜索,以便我可以例如在"the"中突出显示h
与"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操作对我来说不是一个解决方案。