Javascript 正则表达式问题?

需要替换字符串中所有的[]的内值
例如:
原字符: ([A中a8&$%^]+[b])>=[c]+[sd], [] 内值不限任何内容,中英文,数字,特殊字符等,排除[]中有[]字符的情况的。
需要替换为: ([*]+[*])>=[*]+[*], 替换[]中所有的内容, 但是不影响数学表达式逻辑。

请教大神了

阅读 1.8k
5 个回答
str.replace(/\[\s*\/?\s*([^\]]*?)*[^\]]*\]/g,'[*]')
' ([A]+[b])>=[c]+[sd]'.replace(/[\u4e00-\u9fa5_a-zA-Z0-9\&\$\%\^\!\@\#\%\*\_]+/g, '*')

image.png

  • \u4e00-\u9fa5_a-zA-Z0-9 匹配汉字字母数字
  • \&$\%^\!\@\#\%*\_+-\= 匹配特殊字符
let originalStr = "([A]+[b])>=[c]+[sd]";
let pattern = /\[\w+\]/g;
let replacement = "[*]";

let newStr = originalStr.replace(pattern, replacement);

console.log(newStr);
新手上路,请多包涵

使用 (?<=\[)[^\]]+ 来搜索,如果你同时需要在空的 [] 中添加 *,请将正则表达式末尾的 + 更改为 *,详细内容请看:https://regex101.com/r/rE4xUX/1

' ([A中a8&$%^]+[b])>=[c]+[sd]'.replace( /\[([^\[\]])*\]/g , "[*]")

推荐问题