簡體   English   中英

查找並替換長字符串中的確切單詞

[英]Find and replace exact word in long string

下面是我的字符串:

api/Node-1/{Node-1}/Node-1-1/{Node-1-1}

搜索詞: Node-1

替換為:學習

預期產量:

api/Learning/{Learning}/Node-1-1/{Node-1-1}

現在,這里的問題是節點1也與其他節點1-1匹配,但我想進行精確的單詞匹配和替換。

我嘗試了很多選擇,但沒有一個對我有用。

  function replaceAll(str, find, replace) { return str.replace(new RegExp(escapeRegExp(find), 'g'), replace); } function escapeRegExp(str) { return str.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, "\\\\$1"); } console.log(replaceAll('api/Node-1/{Node-1}/Node-1-1/{Node-1-1}','Node-1','Learning')); var replaceStr = 'Node-1'; console.log( 'api/Node-1/{Node-1}/Node-1-1/{Node-1-1}'.replace(new RegExp("\\\\b"+replaceStr+"\\\\b","gi"),"Learning")); console.log( 'api/Node-1/{Node-1}/Node-1-1/{Node-1-1}'.replace(/\\bNode-1\\b/g,'Learning')); 

更新:此問題不是重復的,因為我的第一個答案僅來自此參考 ,而該參考不適用於我的輸入情況。

嘗試這個 :

 function replaceAll(str, find, replace) { return str.replace(new RegExp(escapeRegExp(find), 'g'), replace); } function escapeRegExp(str) { return str + '(?![-])'; } console.log(replaceAll('api/Node-1/{Node-1}/Node-1-1/{Node-1-1}', 'Node-1', 'Learning')); 

它搜索沒有出現在'-'之后的每個str 如果需要在字符集中添加其他不匹配的字符。

試試這個正則表達式^(?!.*Node-1\\(?!-1))\\w+.*

您可以在這里看到它的運行情況

編輯

因此您的代碼將是:

var str = 'api/Node-1/{Node-1}/Node-1-1/{Node-1-1}';
console.log(str.replace(new RegExp("Node-1\(?!-1)","gi"),"Learning"));

工作的JsFiddle

希望這能解決您的問題:

var a = "api/Node-1/{Node-1}/Node-1-1/{Node-1-1}";

var arr = a.split("/");

for (var i=0; i<arr.length; i++) {

    var word = arr[i].replace(/[^a-zA-Z1-9- ]/g, "");
    if (word=="Node-1"){
        arr[i] = arr[i].replace("Node-1", "Learning");
    }
}

newString = arr.join("/");
console.log(newString);

檢查小提琴: https : //jsfiddle.net/z8v0xt98/

嘗試使用全非表達式

console.log('api/Node-1/{Node-1}/Node-1-1/{Node-1-1}'.replace(new RegExp("Node-1[^-]","gi"),"Learning"));

暫無
暫無

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

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