所以我尝试修改一个regex函数,这个函数目前搜索一个单词并在找到时返回它。不幸的是,同一个单词有时可能存在于一个表标题(<th>
标记)中,在这种情况下我不想匹配。
这是JavaScript正则表达式:(lastCoveoSearch
是传入的字的变量)
原始regex函数我甚至在表头中找到了单词:
new RegExp('>[^<]*('+lastCoveoSearch+')', "ig")
我正在测试的一个,似乎是在一个正则表达式上工作,但没有使用我的代码,其中忽略了表头标签和标签中的属性:
new RegExp('<(?!th)\b[^>]*>[^<]*('+lastCoveoSearch+')', "ig")
这里有什么地方我做错了吗?我附上了一个html代码片段,是我正在测试的一个页面的例子。
<div class="component title">
<div class="component-content">
<h1 class="field-title">Wet vs. Dry Funding States</h1> </div>
</div>
<div class="component content">
<div class="component-content">
<div class="field-content"><div class="row">
<div class="col-12 container">
<h2></h2>
</div>
</div>
<table class="table-complex primary" style="text-align: center;">
<thead>
<tr class="primary-type">
<th colspan="2">This is the table header that I do not want to be matched<br />
</th>
</tr>
</thead>
<tbody>
<tr class="data">
<td><span style="text-align: center;">Alabama</span></td>
<td> <span style="text-align: center;">Nebraska</span></td>
</tr>
<tr class="data">
<td> <span style="text-align: center;">Arkansas</span></td>
<td><span style="text-align: center;">New Hampshire</span> </td>
</tr>
<tr class="data">
<td> <span style="text-align: center;">Colorado</span></td>
<td><span style="text-align: center;">New Jersey</span> </td>
</tr>
2条答案
按热度按时间8gsdolmq1#
不确定,但这似乎工作。它非常类似于你的,只需要转义那里的
\
时,使用new RegExp('', '')
语法。bpsygsoo2#
这里不需要正则表达式,只要选择
<td>
元素,并将它们的innerText
与query
字符串匹配即可。