在javascript中使用RegExp对象将字符串替换为值

在javascript中使用RegExp对象将字符串替换为值,javascript,Javascript,也许我忘记了RegExp是如何工作的,但我尝试用空值替换文本 我有这样的文本:这是一个blabla(32332)[XAML],我想删除[]和() 我想使用RegExp对象执行此操作。在javascript中,我的做法如下: var obj=“这是一个blabla(32332)[XAML]”; var patt1=“[\(\)\]\[]”; var regObj=新的RegExp(第1部分,“gi”); obj=obj.replace(regObj,“”); 控制台日志(obj)您可以使用捕获组

也许我忘记了RegExp是如何工作的,但我尝试用空值替换文本

我有这样的文本:
这是一个blabla(32332)[XAML]
,我想删除
[]
()

我想使用RegExp对象执行此操作。在javascript中,我的做法如下:

var obj=“这是一个blabla(32332)[XAML]”;
var patt1=“[\(\)\]\[]”;
var regObj=新的RegExp(第1部分,“gi”);
obj=obj.replace(regObj,“”);

控制台日志(obj)您可以使用捕获组和替换

var obj=“这是一个blabla(32332)[XAML]”;
变量patt1=/\([^]*)\)\[([^\]*)\]\]/gi;
obj=obj.替换(第1部分,“$1$2”);

console.log(obj)
您需要转义第一个
]
。另外,最好使用
/[()\][]/gi
试试这个
控制台.log(“这是一个blabla(32332)[XAML]”。替换(/[\(\)\]\[]/gi,”)
@CertainPerformance,我从C操作MVC(远程服务器)以字符串形式获得的正则表达式)…将C#regex发送到javascript regex以在客户端执行是一种单一的方法。然后,您只需转义第一个
]
(仅此而已,不需要转义任何其他内容)您解决问题的方法是正确的。但是,代码中的问题是,当您打算在此处转义正则表达式的括号字符时:
var patt1=“[\(\)\]\[]\[]”
它们实际上首先在字符串
patt1
中转义,然后作为“[()][]”输入正则表达式,这会破坏它。解决方案是对字符串中的转义字符
`进行转义:
“[\(\)\]\[]”`或直接通过语法构造正则表达式:
var regObj=/[\(\)\]\[]/gi
我希望在
replace
方法中使用RegExp对象…@SnakeEyes当您想要使用RegExp对象时,您只需要使用
/
进行转义,但是您应该更喜欢regex literal,除非您试图构建动态regex@CodeManiac你的长答案是没有必要的,因为这个问题包含了正确的正则表达式。您之前关于在用于构建正则表达式的字符串中转义
/
的评论应该是答案。@RashadSaleh感谢您的评论,但第一种模式并不是不必要的,问题是
()
[]
,因此我将其作为工具,因为它应该在平衡中匹配,而不仅仅是以任何方式匹配它们,所以我写了第一个,第二个只是为了处理op正在做的另一个情况,最初我有一个没有regexp对象的答案,因为我觉得你不需要使用
regexp
,但是既然op要求这样做,所以我在那里添加了一个例子,是的,我同意可以并且应该添加转义行来回答它自己的问题regex
[\(\)\]\[]
在语法和语义上都是正确的。询问者对正则表达式有足够的理解。