【问题标题】:Javascript extract numbers and operators from string with negative valuesJavascript从具有负值的字符串中提取数字和运算符
【发布时间】:2021-03-03 02:46:58
【问题描述】:

我有下一个输入:8+9

我想在单独的数组中提取数字和运算符,我有下一个代码:

const numbers = input.split(/\D/g).filter(Boolean);
console.log("numbersBeforeFilter:", numbers);
const op = input.split(/\d/g).filter(Boolean);

我有["8", "9"]的数字

在运算符中:["+"]

没关系,但如果我有例如下一个表达式:-7,我有下一个结果:

我有["7"]的数字

在运算符中:["-"]

这是错误的,因为我必须在 numbers 数组中有 -7 而运算符 1 为空。

有什么想法吗?

【问题讨论】:

    标签: javascript split expression


    【解决方案1】:

    您可以匹配一个包含前导 - 的数字 如果令牌前面是字符串的开头,或者是另一个运算符:

    const parse = str => str.match(/(?<=^|[-+*/])\-\d+|\d+|[-+*/]/g);
    console.log(
      parse('8+9'),
      parse('-7'),
      parse('3*-5')
    );
    • (?&lt;=^|[-+*/])\-\d+ - 匹配破折号和前面的数字
      • ^ - 字符串的开头,或由
      • [-+*/] - 任何字符 -+*/
    • \d+ - 或匹配数字
    • [-+*/] - 或匹配运算符

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2017-07-20
      • 2012-01-12
      • 1970-01-01
      相关资源
      最近更新 更多