Javascript正则表达式匹配最后用逗号返回一个字符串

时间:2014-11-24 04:13:30

标签: javascript regex

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

2x + 3y

并且我试图仅获得系数(即2和3)

我首先用空格字符标记它作为分隔符给我" 2x" " +" " 3Y"

然后我再次解析它到这个语句只得到系数

var number = eqTokens[i].match(/(\-)?\d+/);

我尝试打印输出但它给了我" 2,"

为什么这样打印,我该如何解决?我尝试使用:

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

但这只是给我一个错误,即number.replace不是函数

2 个答案:

答案 0 :(得分:1)

这有什么问题?

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

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

答案 1 :(得分:0)

匹配将返回每个匹配的数组。由于您将可选的负数放在括号中,因此它是另一个捕获组。该捕获组有一个术语,它是可选的,所以除了你的实际比赛之外它还会返回一个空的匹配。

  • 输入2x - >您的输出:[2,undefined]打印为“2”,
  • 输入-2x - >您的输出:[2,-]

删除否定词周围的括号。

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