javascript - JavaScript RegExp:为什么 `\$` 不匹配 `$` 而 `\\$` 匹配?
问题描述
我想替换成{$variable_name}
一个字符串,比如“嗨,我的名字是 {$name}”。将更改为“嗨,我的名字是 Sam。”
我认为$
将表示为\$
,许多 RegExp 测试网站,例如https://www.regextester.com/,都这样做。
遵循我的代码。
var str = "Hi, my name is {$name}.";
var reg = "\{\$name\}";
str = str.replace(new RegExp(reg,"g"), "Sam");
console.log(str); //Hi, my name is {$name}.
然后,我将其更改\$
为\\$
,它起作用了。
var str = "Hi, my name is {$name}.";
var reg = "\{\\$name\}";
str = str.replace(new RegExp(reg,"g"), "Sam");
console.log(str); //Hi, my name is Sam.
但我不明白为什么,也许是我搜索能力差,我没有找到解释。
谁能给我解释一下?非常感谢。
解决方案
原因是您编写正则表达式的方式。在字符串中,\
字符用于转义,这就是导致您在此处看到的行为的原因。还有另一种编写正则表达式的方法,它遵循与这些正则表达式测试网站使用的相同规则。不同之处只是将字符串包装在正斜杠而不是引号中。
var reg = /\{\$name\}/;
是相同的
var reg = "\{\\$name\}";
推荐阅读
- java - 成对操作给定的 Java 流
- php - 如何在codeigniter中使用sendgrid api库作为第三方库
- react-native - 反应本机构建错误停止运行.\gradlew assembleRelease
- sql-server - SQL Server 中的 bcp
- javascript - 如何在 Rails 控制器方法中从 JavaScript 文件调用不同的方法
- android - 更改 Firebase 项目中的所有者是否会更改其 google-service.json?
- c# - C# 如果在 SQL 更新中可用,否则插入
- html - 将子 div 放在父级的外部和右侧(下拉菜单)
- serial-port - 全息 sim 和 sim800c 模块
- python - 完全相同的python3代码在shell中工作但不在脚本中?