regex - 使用 ${} 的正则表达式
问题描述
我无法让这个正则表达式工作:
let varString = 'I am writing a ${varHere}';
let myKey = 'varHere';
pString = pString.replace(new RegExp(`\${${myKey}}`, 'g'), 'test');
但这有效:
let varString = 'I am writing a ${varHere}';
let myKey = 'varHere';
pString = pString.replace(new RegExp(`{${myKey}}`, 'g'), 'test');
// pString = 'I am writing a $test';
这只是$
一个问题。
解决方案
您没有正确插入字符串:
console.log(`\$\{${myKey}\}`);
会得到你${varHere}
。将其放入 RegExp 中,它将尝试匹配 $(行尾){varhere} 次,这当然是一个无效的正则表达式。您需要转义表达式以获得所需的结果:
new RegExp(`\\\$\\\{${myKey}\\\}`, 'g')
相反,由于您在这里并不真正需要 RegExp,您还可以使用更简单的字符串替换:
pString = varString.replace(`\$\{${myKey}\}`, 'test');
推荐阅读
- google-analytics - 带有两个过滤字段的 Google Analytics(分析)视图过滤器
- python - 使用字典和转义字符时出现奇怪的 Python 行为
- macos - MacVim 的片段插件不起作用
- excel - 使用 VBA 匹配数据列中的子字符串
- javascript - Webdriverio:访问 shadow dom 元素
- sql - 表上的自联接如何返回比表中实际数据更多的行?
- macos - SwiftUI (2.) for MacOS 中的 Buggy 菜单控件
- neo4j - 更新全文搜索索引
- javascript - 当类放在工厂函数之外时,为什么我无法访问 uid 和其他属性?
- ffmpeg - 使用ffmpeg从mp4中提取字幕