我需要提取方括号/圆括号外的文本。"WALL COLOR (IS HERE) [SHERWIN-WILLIAMS]"预期的结果是"WALL COLOR"和不是"WALL COLOR "我试过"WALL COLOR (IS HERE) [SHERWIN-WILLIAMS]".match(/\[(.*?)\]/)[0]是否需要 [0] 来获取字符串而不是数组的结果。
1 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
假设你的括号是平衡的并且没有转义等,那么通过.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
提交
取消