【发布时间】:2020-01-13 23:41:31
【问题描述】:
也许我忘记了 RegExp 的工作原理,但我尝试用空值替换文本。
我的文字如下:this is a blabla (32332) [XAML],我想删除 [] 和 ()。
我想使用 RegExp 对象。在javascript中,我这样做:
var obj = "this is a blabla (32332) [XAML]";
var patt1 = "[\(\)\]\[]";
var regObj = new RegExp(patt1, "gi");
obj = obj.replace(regObj, "");
console.log(obj);
结果还是一样 this is a blabla (32332) [XAML] 表示什么都没有被替换。
我的错误在哪里?这是小提琴:https://jsfiddle.net/weak5ub3/
【问题讨论】:
-
你需要转义第一个
]。另外,最好使用avoid new RegExp:而不是使用/[()\][]/gi -
试试这个
console.log("this is a blabla (32332) [XAML]".replace(/[\(\)\]\[]/gi, ""))。 -
@CertainPerformance 我从 C# action MVC(来自远程服务器)获得的正则表达式作为字符串...这是将 C# 正则表达式发送到 javascript 正则表达式以在客户端执行的单一方法
-
那么你只需要转义第一个
](仅此而已,没有其他需要转义)regex101.com/r/6Mk5yS/1 -
你解决问题的方法是正确的。但是,您的代码中的问题是,当您打算在此处转义正则表达式的括号字符时:
var patt1 = "[\(\)\]\[]";他们实际上首先在字符串patt1中转义,然后作为“[()][]”输入正则表达式,这会破坏它。一种解决方案是转义转义字符` in your string:"[\(\)\]\[]"` 或直接通过语法构造正则表达式:var regObj = /[\(\)\]\[]/gi;
标签: javascript