我想用另一个字符串替换字符串中所有出现的模式。例如,让我们将所有 "$" 转换为 "!":
"$$$" -> "!!!"
Run Code Online (Sandbox Code Playgroud)
普通 string.replace 仅替换第一个匹配项:
"$$$".replace("$", "!"); // gives "$!!"
Run Code Online (Sandbox Code Playgroud)
和正则表达式迫使我逃到特殊字符
"$$$".replace(/\$/g, "!"); // Pattern is now full of backslashes!
Run Code Online (Sandbox Code Playgroud)
是否可以进行全局替换而不必手动转义特殊字符?我有一堆模式是我代码的一部分,我认为如果不得不手动转义所有模式,可读性会受到影响。
我期待一种直接做我想要的东西的技巧,或者至少一种将字符串转换为可由以下人员使用的转义形式的方法 new RegExp
Javascript 中没有标准的正则表达式转义函数。
您可以编写自己的(源代码)或从您的库中获取它(dojo 示例)
function escape(s) {
return s.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')
};
Run Code Online (Sandbox Code Playgroud)
这允许我们在运行时创建自定义正则表达式对象
function replace_all(string, pattern, replacement){
return string.replace( new RegExp(escape(pattern), "g"), replacement);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
852 次 |
| 最近记录: |