正如标题所说......我试图解析一个字符串,例如
2x + 3y
并且我试图仅获得系数(即2和3)
我首先用空格字符标记它作为分隔符给我" 2x" " +" " 3Y"
然后我再次解析它到这个语句只得到系数
var number = eqTokens[i].match(/(\-)?\d+/);
我尝试打印输出但它给了我" 2,"
为什么这样打印,我该如何解决?我尝试使用:
number = number.replace(/[,]/, "");
但这只是给我一个错误,即number.replace不是函数
答案 0 :(得分:1)
这有什么问题?
> "2x + 3y".match(/-?\d+(?=[A-Za-z]+)/g)
[ '2', '3' ]
上述正则表达式只有在数字后跟一个或多个字母表时才匹配。
答案 1 :(得分:0)
匹配将返回每个匹配的数组。由于您将可选的负数放在括号中,因此它是另一个捕获组。该捕获组有一个术语,它是可选的,所以除了你的实际比赛之外它还会返回一个空的匹配。
[2,undefined]
打印为“2”,[2,-]
删除否定词周围的括号。
这只是为了解释为什么你的案子会破裂,但我个人会使用Avinash的答案。