如果部分匹配,使用正则表达式选择整个单词
Regex to select whole word if part matches
我希望能够选择整个单词,在匹配之前和之后…
目前它只选择单词中匹配的部分。所以如果我在单词"Doglets"
中查找"Dog"
,它会选择Dog。
我想让它选择小狗。如果是这样的话,我还想让它选择letsDog
return html.replace(new RegExp('(''b)(' + query + ')(''b)', 'ig'), "<span class='search-enlight'>$&</span>");
更新:function filterSearchWords() {
var query = $("#searchquery").val();
go(query);
function go(query) {
$.extend($.expr[':'], {
'containsi': function (elem, i, match, array) {
return (elem.textContent || elem.innerText || '').toLowerCase()
.indexOf((match[3] || "").toLowerCase()) >= 0;
}
});
$(".search-result p:containsi(" + query + ")").html(function (_, html) {
return html.replace(new RegExp('(''b)( ''w*' + query + '''w*)(''b)', 'ig'), "<span class='search-enlight'>$&</span>")
});
$(".search-result h2 a:containsi(" + query + ")").html(function (_, html) {
return html.replace(new RegExp('(''b)( ''w*' + query + '''w*)(''b)', 'ig'), "<span class='search-enlight'>$&</span>")
});
console.log(query);
}
}
它现在匹配完整的单词,但是它不匹配大写字母,i标志似乎不起作用
HTML:div class="search-result">
<span class="thumb" style="font-family: 'draftit'; float: left;"></span>
<h2 class="title"><a href="/produkter/malins-testprodukt/skatteavdrag/berakning-av-skatteavdrag/skatteavdrag-nar-skattesedel-inte-har-lamnats/">Skatteavdrag när skattesedel inte har lämnats</a></h2>
<p>
Arbetsgivare får från Skatteverket besked om hur skatteavdraget för respektive anställd ska beräknas. Se avsnittet tabellavdrag och CSR-förfrågan . Arbetstagaren behöver då inte l...
</p>
</div>
在这种情况下,您需要在Regex中包含整个单词,请尝试以下方法:
(''b)( ''w*'+ query + '''w*)(''b)
你的代码将是:
var html = "The Doggy dog is with Doglets and Doggy too!";
var query = "dog";
document.write(html.replace(new RegExp('(''b)( ''w*' + query + '''w*)(''b)', 'ig'), "<span class='search-enlight'>$&</span>"));
.search-enlight {
background-color: yellow;
color: red;
}
你能在被替换之前发布你的html样本吗?cause/([^]Dog[^])/应该可以工作,但是你的关键字周围似乎有一些'b,所以答案应该是
([^ ]*)(''bdog''b)([^ ]*)
对于像
这样的字符串test of 'bdog'blet
用这个代替:'b.*?dog.*?'b
.
表达式的问题是您试图匹配由单词边界包围的query
部分。在前后添加.*?
将指示regex引擎对您感兴趣的子字符串和单词边界之间的其他字符进行非贪婪搜索:
return html.replace(new RegExp('(''b)(.*?' + query + '.*?)(''b)', 'ig'), "<span class='search-enlight'>$&</span>");
另一个选项:
'w*Dog'w*
相关文章:
- 使用正则表达式选择圆括号内的内容
- 正则表达式,用于选择引号中的所有空白
- 需要帮助设计正则表达式来选择'|'和'|'如果第一个'|'后面跟着一个空格
- 如何使用正则表达式每隔一秒选择一次
- 正则表达式选择任何 html 标记之间的字符串
- 正则表达式用于从转换矩阵中选择元素
- 如何使用正则表达式按名称选择元素
- JavaScript 正则表达式 lookback 和 jQuery 选择器
- 如何在分隔符正则表达式 javascript 之间选择 char
- Jquery 选择器中的正则表达式
- jQuery选择器使用正则表达式(或其他东西)
- 谷歌邮件应用程序脚本中的正则表达式困难 - 在两个单词之间选择单词
- 如何修复正则表达式以仅从广告系列中选择base_bid - 而不是跳过我的结束字符串 - base_bid文本
- 用于使用 javascript 匹配 id 选择器的正则表达式
- 流星:正则表达式不适用于 aldeed:表格的选择器
- 正则表达式 x(?!n) 在 x 选择器中使用可选字符
- Javascript:在HTML表中,如何从一列中选择部分文本(匹配一些正则表达式),并将其移动到下一列
- 介于选择之间的Javascript正则表达式
- 正则表达式以选择HTML中的部件
- 如何使用javascript中的正则表达式选择不在双引号/单引号之间的数字