Javascript正则表达式匹配,返回一个结尾带有逗号的字符串

Javascript正则表达式匹配,返回一个结尾带有逗号的字符串,javascript,regex,Javascript,Regex,正如标题所说的……例如,我试图解析一个字符串 2x+3y 我试图只得到系数(即2和3) 我首先用空格字符作为分隔符标记它,给我“2x”+“3y” 然后我再次将其解析为这个语句,只得到系数 var number = eqTokens[i].match(/(\-)?\d+/); 我试着打印输出,但结果是“2” 为什么要这样打印?我该如何修复它?我尝试使用: number = number.replace(/[,]/, ""); 但是这只是给了我一个错误,这个数字。replace不是一个函数这个怎

正如标题所说的……例如,我试图解析一个字符串

2x+3y

我试图只得到系数(即2和3)

我首先用空格字符作为分隔符标记它,给我“2x”+“3y”

然后我再次将其解析为这个语句,只得到系数

var number = eqTokens[i].match(/(\-)?\d+/);
我试着打印输出,但结果是“2”

为什么要这样打印?我该如何修复它?我尝试使用:

number = number.replace(/[,]/, "");

但是这只是给了我一个错误,这个数字。replace不是一个函数

这个怎么了

> "2x + 3y".match(/-?\d+(?=[A-Za-z]+)/g)
[ '2', '3' ]

上面的正则表达式只有在后跟一个或多个字母时才与数字匹配。

match将返回每个匹配的数组。由于您将可选负数放在括号中,因此它是另一个捕获组。该捕获组有一个术语,并且是可选的,因此它将在实际匹配的基础上返回一个空匹配

  • 输入2x->您的输出:
    [2,未定义]
    ,输出为“2”
  • 输入-2x->您的输出:
    [2,-]
去掉负片周围的括号


这只是为了解释为什么你的案子会破裂,但就我个人而言,我会使用Avinash的答案。

注意:你可能会感兴趣。逗号是因为
number
是一个数组,第二个元素为空。如果您使用
警报
输出值。使用
console.log
功能输出到浏览器的控制台(在大多数浏览器中按F12打开)为什么返回数组??我的意思是,它不应该只与数字匹配吗?例如,如果我试图匹配“2x”,它不应该只为十进制数返回2吗
“-2x+3.5y”。匹配(/-?\d+(?:\。\d+)(?=[A-Za-z]+)/g)
我不太熟悉正则表达式的使用,当我尝试执行此任务时,首先想到的是将其分解,就像我所做的那样…不知道我可以在不同时获得文本的情况下以某种方式获得数字