我需要替换字符串中所有匹配的单词或特殊字符,但无法找到一种方法。
例如我有一个字符串:"This - is a great victory"
我需要用-
符号替换所有+
。或great
与unpleasant
- 用户选择要替换的单词并替换它。
"\\b"+originalTex+"\\b"
正在努力,直到我意识到\ b只能用单词字符工作。
所以问题是:什么是替换\ b会让我替换任何由空格包围的匹配单词?
编辑:我无法删除字边界,因为它会导致不精确的匹配。例如:你是你世界的创造者,在改变你的同时,你也会被改变。因为它包含"你"
答案 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。)