javascript 正则表达式匹配有效但替换无效

标签 javascript regex

我正在尝试使用正则表达式替换我拥有的正则表达式。当我使用 match 方法时,它返回具有正确索引和匹配的数组,但是当我使用替换并添加替换字符串时,它不起作用。

var a = "$#,##0.00".match("[\\d+-,#;()\\.]+");
console.log(a);

返回[“#,##0.00”,索引:1,输入:“$#,##0.00”]

var b = "$#,##0.00".replace("[\\d+-,#;()\\.]+","");
console.log(b);

返回 $#,##0.00 而我希望它只返回 $

有人可以指出我做错了什么吗?谢谢 示例链接为:

var a = "$#,##0.00".match("[\\d+-,#;()\\.]+");
console.log(a);
var b = "$#,##0.00".replace("[\\d+-,#;()\\.]+","");
console.log(b);

最佳答案

.match仅接受正则表达式。因此,如果提供了字符串,.match 将使用 new RegExp 将其显式转换为正则表达式。

.replace但是,它同时接受字符串(按字面意思作为搜索)或正则表达式,如果您希望它使用正则表达式,则必须传入正则表达式。

var b = "$#,##0.00".replace(new RegExp("[\\d+-,#;()\\.]+"), "");
//                          ^^^^^^^^^^^                  ^

或使用正则表达式文字:

var b = "$#,##0.00".replace(/[\d+-,#;()\.]+/, "");

关于javascript 正则表达式匹配有效但替换无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43504892/

相关文章:

javascript - 从 javascript onclick 发出 ajax 请求

javascript - Chai-as-promised 不提取文本值

Mysql查询,包含一个字符串,然后是电子邮件中的3个数字

java - 从普通 HTML 表单调用 Struts2 命名空间

javascript - Jquery - 如何设置溢出以滚动具有多个可放置的可拖动对象

php - preg_replace html标签

javascript - JS Twin-Bcrypt 盐模式

php - 在单引号和双引号内捕获 __ ('<string>' )

ios - NSString正则表达式查找和替换

javascript - 禁用按钮不会在 UpdatePanel 中提交回发