RegExp替换不替换模式

时间:2016-03-30 05:50:02

标签: javascript regex replace pattern-matching regexp-replace

我想用## - ##(#:=任意数字符号)替换####。

if (/^([0-9]{2})([0-9]{2})$/.test(str)) {       
    str = str.replace("/^([0-9]{2})([0-9]{2})$/", "$1-$2");
    console.log(str);
}

在控制台中,我得到####(不是## - ##) 我做错了什么?

1 个答案:

答案 0 :(得分:3)

你需要将正则表达式传递给替换函数而不是字符串 - 在你的情况下,你试图替换字符串文字/^([0-9]{2})([0-9]{2})$/

str = str.replace(/^([0-9]{2})([0-9]{2})$/, "$1-$2");

var str = '4455';
snippet.log('before: ' + str);
str = str.replace(/^([0-9]{2})([0-9]{2})$/, "$1-$2");
snippet.log('after: ' + str);
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>