【问题标题】:Replace string with a value using RegExp object in javascript [duplicate]在javascript中使用RegExp对象将字符串替换为值[重复]
【发布时间】: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


【解决方案1】:

您可以使用捕获组和替换

var obj = "this is a blabla (32332) [XAML]";
var patt1 = /\(([^)]*)\)|\[([^\]]*)\]/gi;

obj = obj.replace(patt1, "$1$2");

console.log(obj)

如果您想删除[](),无论它们在哪里,它们是否平衡,都可以简单地使用

  [\]()\[]+

Regex Demo


使用RegExp对象,当你想使用regexp对象时,你需要用\\转义特殊字符

var obj = "this is a blabla (32332) [XAML]";
var patt1 = new RegExp("\\(([^)]*)\\)|\\[([^\\]]*)\\]", "gi");

obj = obj.replace(patt1, "$1$2");
console.log(obj)

var pat2 = new RegExp("[\\]()\\[]+", "gi")
var secondObj = obj.replace(pat2, "$1$2")
console.log(secondObj)

【讨论】:

  • 我想要 replace 方法中的 RegExp 对象...
  • @SnakeEyes 当你想使用正则表达式对象时,你只需要使用// 转义,但除非你试图构建动态正则表达式,否则你应该更喜欢正则表达式文字
  • @CodeManiac 您的冗长回答是不必要的,因为问题确实包含正确的正则表达式。您之前关于在用于构建正则表达式的字符串中转义 / 的评论应该是答案。
  • @RashadSaleh 感谢您的评论,但第一个模式不是不必要的,问题是 ()[] 所以我使用它,因为它应该平衡匹配,而不仅仅是其中的任何一个任何方式,所以我写了第一个,第二个只是为了处理 op 正在做的另一种情况,最初我没有正则表达式对象的答案,因为我觉得你不需要使用RegExp,但是因为 OP 要求这样做我在那里添加了示例,是的,我同意可以并且应该添加转义线来回答自己
  • 正则表达式 [\(\)\]\[] 在语法和语义上都是正确的。提问者对正则表达式有足够的了解。
猜你喜欢
  • 1970-01-01
  • 2016-04-15
  • 2020-11-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2015-09-04
  • 2014-06-30
相关资源
最近更新 更多