正则表达式 x(?!n) 在 x 选择器中使用可选字符

Regex x(?!n) with optional characters in the x selector

本文关键字:字符 选择器 正则表达式      更新时间:2023-09-26

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

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

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

15000.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]);
}

尝试以下表达式:

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

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

换句话说,它

确保没有一个数字后跟一个变量名称,然后它与数字匹配。

正则表达式 101 演示