JavaScript技术问题:如何仅保留或移除字符串中的[]
问题解决:处理字符串中的方括号[]
给定初始代码:
let num = '(((185 + 223.85){} * 15)[] - 543)/2';
你之前用num.replace(/\[^()^{}\]/g,'')能得到(((){})),但尝试num.replace(/\[ ^\[\] \]/g,'')时毫无效果,下面直接给出仅移除或仅保留[]的正确实现:
仅移除字符串中的[]
直接匹配所有[和],替换为空即可,用正则字符集精准匹配这两个符号:
num = num.replace(/[\[\]]/g, '');
执行后输出:(((185 + 223.85){} * 15) - 543)/2
仅保留字符串中的[]
匹配所有不是[和]的字符并替换为空,利用正则字符集的取反规则(^放在字符集开头表示“非集合内字符”):
num = num.replace(/[^\[\]]/g, '');
执行后输出:[]
为什么你之前的正则无效?
你写的/\[ ^\[\] \]/g存在三个关键问题:
- 正则里的空格会被当作需要匹配的空格,但原字符串中
[]周围没有空格,自然匹配不到 - 取反符号
^位置错误,只有放在字符集[]开头才表示取反逻辑,你把它放在外面完全偏离了目标 - 结构混乱,多余的转义和空格导致正则规则彻底不符合需求
内容的提问来源于stack exchange,提问作者Mehul Kunwar
相关产品推荐
相关产品推荐

