Regexp替换字符串中所有完全匹配的单词/字符

时间:2017-04-03 17:01:49

标签: javascript regex

我需要替换字符串中所有匹配的单词或特殊字符,但无法找到一种方法。

例如我有一个字符串:"This - is a great victory"

我需要用-符号替换所有+。或greatunpleasant - 用户选择要替换的单词并替换它。

"\\b"+originalTex+"\\b" 

正在努力,直到我意识到\ b只能用单词字符工作。

所以问题是:什么是替换\ b会让我替换任何由空格包围的匹配单词?

编辑:我无法删除字边界,因为它会导致不精确的匹配。例如:你是你世界的创造者,在改变你的同时,你也会被改变。因为它包含"你"

2 个答案:

答案 0 :(得分:0)

两个替换



var txt = "This - is a great, great - and great victory"
var originalTex1 = "great",originalTex2 = "-",
re1 = new RegExp("\\b"+originalTex1+"\\b","g"), 
re2 = new RegExp("\\s"+originalTex2+"\\s","g") 

console.log(txt.replace(re1,"super").replace(re2," + "))




答案 1 :(得分:0)

您需要使用以下代码:

var s  = "you are creator of your world";
var search = "you";
var torepl = "we";
var rx = new RegExp("(^|\\s)" + search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + "(?!\\S)", "gi");
var res = s.replace(rx, "$1" + torepl);
console.log(res);

(^|\\s)将匹配并捕获到第1组字符串或空格的开头。 search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')将在搜索词内转义特殊字符(如果有)。 (?!\\S)预测将在搜索词之后立即需要空格或字符串结尾。

$1反向引用在替换期间将组1的内容插回到字符串中(此处不需要使用任何lookbehinds。)