JavaScript RegExp替换

时间:2011-06-03 16:35:47

标签: javascript regex replace

不确定我在哪里做错了。我有一个字符串,如Test(123x),我试图找到(123x)并替换它没有:

这是我的代码

<script type="text/javascript">
    var original = "Test (1x)";
    var newString = original.replace(new RegExp("\(\d{1,6}[x]{1}\)",original),"");
    console.log(newString);
</script>

我已经测试了正则表达式模式并且它正确匹配,但是,当我登录到控制台时,它不是用“”替换(1x)

2 个答案:

答案 0 :(得分:9)

您应该尽可能使用 RegExp 文字:

var original = "Test (1x)";
var newString = original.replace(/\(\d{1,6}[x]{1}\)/,"");

您的尝试失败,因为"\(\d{1,6}[x]{1}\)"被解释为"(d{1,6}[x]{1})"\‍只是因未知的转义序列而被剥离。您还需要转义\

new RegExp("\\(\\d{1,6}[x]{1}\\)",original)

除此之外, RegExp 构造函数的第二个参数用于标志(g =全局替换,i =不区分大小写等)。

答案 1 :(得分:2)

original传递给RegExp是错误的。您还必须转义字符串中的每个斜杠(以便它为正则表达式生成斜杠),因为\是JS字符串中的转义字符:

original.replace(new RegExp("\\(\\d{1,6}[x]{1}\\)"),"");

请注意,[x]{1}与直接撰写x相同。

您还可以使用正则表达式文字

/\(\d{1,6}x\)/