javascript - 正则表达式替换字符串中所有完全匹配的单词/字符

标签 javascript regex

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

例如,我有一个字符串:“This - is a Great Victor”

我需要将所有 - 替换为 + 符号。或者greatunpleasant - 用户选择要替换的单词并给出替换。

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

一直在工作,直到我意识到\b 只适用于单词字符。

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

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

最佳答案

您需要使用以下代码:

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 组的内容插入回字符串中(此处无需使用任何后向查找)。

关于javascript - 正则表达式替换字符串中所有完全匹配的单词/字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43190354/

相关文章:

javascript - contentEditable div 显示 : none/block focus problem on Chrome

javascript - 如何在 webkit 1.2.5 的 javascript 中强制回流

javascript - $.post jQuery 更快或更慢取决于浏览器?

c# - 如何替换 Regex 表达式中的实际星号字符 (*)?

Java - 转义字符串以防止 SQL 注入(inject)

javascript - JSON 未定义节点尝试解析

javascript - 无法访问 JS 正则表达式结果 - 无法读取 null 的属性 '1'

regex - 如何在 Clojure 中使用正则表达式过滤目录列表

c# - 用于识别后跟数字的 Guid 的正则表达式

Javascript 变量 - 需要一个变量