簡體   English   中英

如何使用正則表達式忽略字符串替換中的某些單詞

[英]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);
});

但是我得到了整個字符串中的每一個,包括但我不想替換。

任何機構都可以幫助我從替換中排除或忽略以下項目

  1. <span class="red">
  2. </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標記globalignore case

您可以在JSFiddle嘗試

在這里,您有另一個解決方案。

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中。

來自玻利維亞拉巴斯的歡呼聲

不要重新發明輪子。 在這里,您有一個重點插件可以解決該問題:

http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html

希望能幫助到你。 來自玻利維亞拉巴斯的歡呼聲

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM