我想获取一个字符串并删除方括号内所有出现的字符:
[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/