0

所以我有一个解决 1 个变量的 javascript 程序。在选择没有与之关联的变量的数字时,我遇到了障碍。

这是我当前的正则表达式:

(\+|-)?([0-9]+)(\.[0-9]+)?(?![a-z])

接受输入 like15000.53=1254b+21 并返回[15000.53, 125, +21],当它应该返回时[15000.53, +21](是的,+ 应该在那里)

我知道为什么会这样。位数是可选的,因此该函数可以处理大数字和浮点数,但它们是可选的,因此很难确保选择了整个数字。这样做的结果是选择数字的所有数字,除了直接在变量旁边的数字。

任何人都知道数字位数保持可选的方法,但仍确保变量不跟随数字?谢谢!

var reg = (\+|-)?([0-9]+)(\.[0-9]+)?(?![a-z]);
var numbers = [];
var equation = '15000.53=1254b+21';
while (aloneInt = reg.exec(side[0])) {
    numbers.push(aloneInt[0]);
}
4

1 回答 1

0

试试下面的表达式:

(?![+-]?[0-9.]+[a-z])(\+|-)?([0-9]+)(\.[0-9]+)?

添加的负前瞻(?![+-]?[0-9.]+[a-z])确保没有一个或多个可选带符号的浮点数后跟字母表中的字母。

换句话说,它确保没有数字后跟变量名,然后它匹配数字。

正则表达式 101 演示

于 2013-09-16T18:38:30.460 回答