javascript - 如何删除括号中除完全数字内容之外的所有内容?

标签 javascript regex regex-negation

我想获取一个字符串并删除方括号内所有出现的字符:

[foo][foo123bar][123bar] 应删除

但我想保持所有仅由数字组成的括号完整:

[1][123] 应保留

我尝试了一些方法,但没有成功:

text = text.replace(/\[^[0-9+]\]/gi, "");

text = text.replace(/\[^[\d]\]/gi, "");

最佳答案

您正在寻找的工具是negative lookahead 。以下是您将如何使用它:

text = text.replace(/\[(?!\d+\])[^\[\]]+\]/g, "");

\[ 找到左括号后,先行查找 (?!\d+\]) 断言括号不仅仅包含数字。

然后,[^\[\]]+ 匹配任何非方括号的内容,确保(例如)您不会意外匹配“嵌套”括号,例如 [[ 123]]

最后,\] 与右括号匹配。

关于javascript - 如何删除括号中除完全数字内容之外的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6924223/

相关文章:

javascript - 在 chrome 中访问了 JS 链接

javascript - CSS 悬停未按预期执行

ruby-on-rails - Rails 由最后一个分隔符分割

java - 使用单词作为分隔符分割字符串

c# - 正则表达式 - 避免字符

regex - 如何排除第一组的单个字符被匹配到第二组?

javascript - 尝试将事件从其组件之一传播到自定义 HTML 元素时抛出

javascript - 在 JavaScript 单击事件中创建的 polymer 纸按钮未触发

C++11 正则表达式匹配不以句点结尾的完整单词?

regex - 如何在 grunt concat 中匹配每个文件,但一个文件除外?