为了账号安全,请及时绑定邮箱和手机立即绑定

JS提取括号外的所有文字

JS提取括号外的所有文字

千巷猫影 2023-03-24 16:30:04
我需要提取方括号/圆括号外的文本。"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

正则表达式演示 2


查看完整回答
反对 回复 2023-03-24
  • 1 回答
  • 0 关注
  • 315 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信