[英]How to exclude some word in string in regex (to replace using javascript)
[英]How to ignore some word from string replace using regex
我的字符串包含5到6個單詞,我想用熒光筆樣式替換一些單詞。
$(document).ready(function() {
var str = "Micromax Samsung S3 Microsoft Galaxy S";
var arr = ["Micro", "s"];
arr.forEach(function(item) {
str = str.replace(new RegExp(item.replace(/\+/g, "\\+"), "g"), '<span class="red">'+ item +'</span>');
})
$('#dvHtml').html(str);
});
但是我得到了整個字符串中的每一個,包括但我不想替換。
任何機構都可以幫助我從替換中排除或忽略以下項目
<span class="red">
</span>
輸出應為
現在,這會將Micro替換為<span class="red">Micro</span>
,將s替換為<span class="red">s</span>
以下是輸出
您需要像這樣更改正則表達式
var str = "Micromax Samsung S3 Microsoft Galaxy S";
var arr = ["Micro", "s"];
var t = str.replace(new RegExp('\\b('+arr.join('|')+')',"gi"), '<span class="red">$1</span>');
$('#dvHtml').html(t);
在這
\\b
在開始的單詞中查找 arr.join('|')
-返回類似於a|b
字符串-因此找到它們中的任何一個 gi
標記global
並ignore case
在這里,您有另一個解決方案。
function escapeRegExp(str) {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
function highlight(str, needle){
var parts = str.split(/<[/]?span.*?>/gi);
for(var i=0; i<parts.length; i++){
if(i%2 == 0){
parts[i] = parts[i].replace(new RegExp("("+escapeRegExp(needle)+")", 'gi'), '<span class="red">$1</span>');
}else{
parts[i] = '<span class="red">'+ parts[i] +'</span>';
}
}
return parts.join('');
}
$(document).ready(function() {
var str = "Micromax Samsung S3 Microsoft Galaxy S";
var arr = ["Micro", "S"];
arr.forEach(function(item) {
str = highlight(str, item);
});
console.log(str);
$('#dvHtml').html(str);
});
這一優點是您可以根據需要在處理的字符串上多次應用高亮方法 。
JSFiddle: http : //jsfiddle.net/edgarinvillegas/4ZK7W/2/
另外,您可以在字符串中包含特殊字符以進行搜索。 例如, var arr = ["Micro", "Sam|"]
不會突出顯示“ Sam”,而是突出顯示“ Sam |” 如果它存在於str中。
來自玻利維亞拉巴斯的歡呼聲
不要重新發明輪子。 在這里,您有一個重點插件可以解決該問題:
希望能幫助到你。 來自玻利維亞拉巴斯的歡呼聲
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.