我需要提取方括号/圆括号外的文本。"WALL COLOR (IS HERE) [SHERWIN-WILLIAMS]"预期的结果是"WALL COLOR"和不是"WALL COLOR "我试过"WALL COLOR (IS HERE) [SHERWIN-WILLIAMS]".match(/\[(.*?)\]/)[0]是否需要 [0] 来获取字符串而不是数组的结果。
1 回答
慕田峪9158850
TA贡献1794条经验 获得超8个赞
假设你的括号是平衡的并且没有转义等,那么通过.replace. 您可以使用此.replace方法删除所有两边都被可选空格包围的[...]字符串。(...)
str = str.replace( /\s*(?:\[[^\]]*\]|\([^)]*\))\s*/g, "" ) //=> "WALL COLOR"
正则表达式详细信息:
\s*: 匹配0个或多个空格(?:: 启动非捕获组\[[^\]]*\]: 匹配文本[...]|: 或者\([^)]*\): 匹配文本(...)): 结束非捕获组\s*: 匹配0个或多个空格
PS:如果你想在你的输入中允许转义括号,WALL COLOR (IS \(escaped\) HERE) [SHERWIN-\[WILL\]IAMS]那么使用这个更复杂的正则表达式:
/\s*(?:\[[^\\\]]*(?:\\.[^\\\]]*)*\]|\([^\\)]*(?:\\.[^\\)]*)*\))\s*/g
添加回答
举报
0/150
提交
取消
