簡體   English   中英

正則表達式更改字符串中的某些單詞

[英]regex to change certain words in a string

我正在設法使我對正則表達式有所了解。 我以為以下方法會起作用,但不幸的是,它不會起作用。

我想做的事:

給定一個字符串str (見下文),我想更換,是不是任何字shadegravelgravel

str = "gravel shade water grass people water shade";
output = str.replace(/([^gravel|^shade])/g,' gravel ');  

gravel shade gravel gravel gravel gravel shade output應等於gravel shade gravel gravel gravel gravel shade 我所擁有的足夠接近,但有點偏離。

您的([^gravel|^shade])匹配非gravel|任意一個字符並將其捕獲到組1中| ^ ,然后全部用gravel代替。

您可以使用

/\b(?!(?:shade|gravel)\b)\w+\b/g

正則表達式演示

模式說明:

  • \\b前導詞邊界
  • (?!(?:shade|gravel)\\b) -否定的超前行為,將排除匹配整個單詞的shadegravel
  • \\w+ -1個以上的文字字符(屬於[A-Za-z0-9_]設置)
  • \\b尾部單詞邊界。

 var str = 'gravel shade water grass people water shade'; var result = str.replace(/\\b(?!(?:shade|gravel)\\b)\\w+\\b/g, 'gravel'); document.body.innerHTML = result; 

這是使用split/joinarray.map的非正則表達式解決方案:

 var str = "gravel shade water grass people water shade"; var repl = str.split(' ').map(function (w) { return (w!='gravel' && w!= 'shade')?'gravel':w; }).join(' ') document.writeln("<pre>" + repl + "</pre>") //=> "gravel shade gravel gravel gravel gravel shade" 

暫無
暫無

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

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