【问题标题】:JS extract all text outside the bracketsJS提取括号外的所有文本
【发布时间】:2020-09-24 06:06:41
【问题描述】:

我需要提取方括号外的文字。

"WALL COLOR (IS HERE) [SHERWIN-WILLIAMS]"

预期结果是"WALL COLOR" 而不是"WALL COLOR "

我试过了

"WALL COLOR (IS HERE) [SHERWIN-WILLIAMS]".match(/\[(.*?)\]/)[0]

是否需要 [0] 才能将结果作为字符串而不是数组。

【问题讨论】:

标签: javascript regex


【解决方案1】:

假设您的括号是平衡的并且没有转义等,通过.replace 会更容易做到这一点。您可以使用此.replace 方法删除所有由[...](...) 包围的字符串,两边都带有可选的空格。

str = str.replace( /\s*(?:\[[^\]]*\]|\([^)]*\))\s*/g, "" )
//=> "WALL COLOR"

RegEx Demo

正则表达式详细信息:

  • \s*: 匹配 0 个或多个空格
  • (?:: 启动非捕获组
    • \[[^\]]*\]:匹配 [...] 的文本
    • |:或者
    • \([^)]*\):匹配 (...) 的文本
  • ): 结束非捕获组
  • \s*: 匹配 0 个或多个空格

PS:如果您想在输入中允许转义括号,即WALL COLOR (IS \(escaped\) HERE) [SHERWIN-\[WILL\]IAMS],请使用这个更复杂的正则表达式:

/\s*(?:\[[^\\\]]*(?:\\.[^\\\]]*)*\]|\([^\\)]*(?:\\.[^\\)]*)*\))\s*/g

RegEx Demo 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 2021-11-24
    • 2019-03-18
    • 2010-09-27
    • 1970-01-01
    • 2013-12-06
    相关资源
    最近更新 更多