为整数,浮点数,负整数撰写regexp
。
从这样的字符串:2-1+7*-777/-0.001+0.99
我需要得到一个数组:
["2", "1", "7", "-777", "-0.001", "0.99"].
我正在尝试使用此代码:
var str = "2-1+7*-777/-0.001+0.99";
var array = str.match(/(?:\*|\/|\+|\-)(-\d+(\.\d+)?)|(\d+\.\d+)|(\d+)/g);
但问题是结果是:
["2", "1", "7", "*-777", "/-0.001", "0.99"]
特别关注*-777
和/-0.001
在此数组中的负数之前,我不需要操作符号。只有负数(带“ - ”)和正数(没有“+”)浮点数和整数。
我不需要在'2-1'中匹配'-1',但我需要在'2 * -1'中匹配'-1'。
此外,我需要一种不仅适用于Chrome的解决方案。
这不是Matching regex for positive and negative numbers with floating point
的欺骗我试图从计算术语中解析数字。我需要在数字 ONLY 之前得到负号,如果它们在分组/
或乘法*
后出现。链接的答案正则表达式可以不执行此操作,它会找到所有负数。
(编辑:P.Artner从评论到我提出的解决方案)
答案 0 :(得分:1)
您可以尝试以下方法:
(?:[*/](-[\d.]+))|([\d\.]+)
const regex = /(?:[*/](-[\d.]+))|([\d\.]+)/g;
const str = `2-1+7*-777/-0.001+0.99`;
let m;
while ((m = regex.exec(str)) !== null) {
if(m[1]!=null)
console.log(m[1]);
else if(m[2]!=null)
console.log(m[2]);
}
//["2", "1", "7", "-777", "-0.001", "0.99"].