不确定我在哪里做错了。我有一个字符串,如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)
答案 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\)/