我正在尝试使用正则表达式替换我拥有的正则表达式。当我使用 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/