JavaScript如何在数学运算符前后加空格分隔字符串且不拆分数字
实现方案
直接用正则匹配四则运算符做全局替换即可,不会拆分数字:
基础版(无负数场景,匹配你给出的示例需求)
const originStr = "21+2-32*2"; const formattedStr = originStr.replace(/([+\-*/])/g, ' $1 '); console.log(formattedStr); // 输出结果:21 + 2 - 32 * 2
正则说明:/([+\-*/])/g 会全局匹配所有+、-、*、/运算符,捕获后替换为「空格+运算符+空格」,全程不会修改数字字符,完全避免拆分数字的问题。
进阶版(兼容负数场景)
如果需要处理带负号的表达式(比如"-21+3*-4"),可以优化正则避开负号的误匹配:
const originStr = "-21+3*-4"; // 支持ES2018+零宽后行断言的环境可用 const formattedStr = originStr.replace(/(?<!^|\d)([+\-*/])/g, ' $1 '); // 兼容旧环境的写法 // const formattedStr = originStr.replace(/(^|[^\d])([+\-*/])/g, '$1 $2 '); console.log(formattedStr); // 输出结果:-21 + 3 * -4
内容的提问来源于stack exchange,提问作者adamk05
相关产品推荐
相关产品推荐

