如何使用 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 转义括号? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
使用 VB Script RegExp 对象将 '\uA90F' 形式的 JSON Unicode 转义序列转换为 XML 字符引用