如何使用 Javascript RegExp 转义括号? [复制]

Posted

技术标签:

【中文标题】如何使用 Javascript RegExp 转义括号? [复制]【英文标题】:How can I use Javascript RegExp to escape brackets? [duplicate] 【发布时间】:2017-01-26 07:35:09 【问题描述】:

我尝试使用以下正则表达式来转义括号和里面的东西。 这是示例字符串:

hjdsoghbesi (saeogbesor) serogberso ersberawsewf(edsrgb) sfdrobersb ouersber

我希望结果代码是

hjdsoghbesi serogberso ersberawsewf sfdrobersb ouersber

我尝试使用以下内容:

myString.replace(/\(.*\)/g,"")

但是,这集中在第一个开括号和最后一个闭括号上,并给了我:

hjdsoghbesi sfdrobersb ouersber

我怎样才能达到我想要的结果?

如果您打算回答,请告诉我为什么您的 RegExp 可以达到我的目的,因为我不熟悉 RegExp。

【问题讨论】:

逃跑是什么意思?你的意思是删除? 当您的正则表达式不起作用时,尝试使用在线正则表达式测试器(例如 regex101)总是一个好主意。除了测试您的正则表达式之外,它还会以人类的方式向您描述它。在这种情况下,* 的描述为:量词:* 介于零和无限次之间,尽可能多地,按需回馈 [贪婪] 【参考方案1】:

除了 Oriol 的回答之外,我还看到了以下可能性。使用[^\)] 而不是.myString.replace(/\([^\)]*\)/g,"")[^\)] 匹配除) 之外的所有字符。 [] 列出匹配的字符,^ 在此时反转它们,以便匹配除列出的字符之外的所有字符。

【讨论】:

无需转义字符集中的)【参考方案2】:

使用非贪心量词:

var str = "hjdsoghbesi (saeogbesor) serogberso ersberawsewf(edsrgb) sfdrobersb ouersber";
console.log(str.replace(/\(.*?\)/g, ""));

* 是贪心的,它会匹配尽可能多的字符。

*? 比较懒,会尽量少匹配。

【讨论】:

我看到你使用了“?”以防止出现问题。你能解释一下为什么会这样吗? 嵌套括号怎么样? @stdob——我假设没有嵌套。无论如何,正则表达式无法处理任意深度的嵌套。 你能解释一下为什么会这样吗?会这样是因为*?告诉它这样做。

以上是关于如何使用 Javascript RegExp 转义括号? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

javascript正则表达式

javascript正則表達式

使用 VB Script RegExp 对象将 '\uA90F' 形式的 JSON Unicode 转义序列转换为 XML 字符引用

RegExp类型

如何使用 javascript 在 regExp 中使用动态变量? [复制]

如何在 React-Native Webview 的注入 JavaScript 道具中使用 RegExp?