【问题标题】:Javascript RegEx for matching positive and negative integers [duplicate]用于匹配正整数和负整数的 Javascript RegEx [重复]
【发布时间】:2019-09-22 19:07:43
【问题描述】:

我正在尝试从给定的字符串中提取 positivenegative integers。但只能提取正整数。

我将"34,-10" 字符串传递给getNumbersFromString 参数

我得到了

输出:

['34','10']

预期的输出应该是

[34,-10]

我该如何解决这个问题?

function getNumbersFromString(numberString){
  var regx = numberString.match(/\d+/g);
  return regx;
}

console.log(getNumbersFromString("34,-10"));

【问题讨论】:

    标签: javascript node.js regex string typescript


    【解决方案1】:

    您还可以在数字前匹配-sign(至少0,最多1)。然后你可以使用map() 将它们转换为数字。

    function getNumbersFromString(numberString){
      var regx = numberString.match(/-?\d+/g).map(Number);
      return regx;
    }
    
    console.log(getNumbersFromString("34,-10"));

    【讨论】:

    • Negative 应该是可选的 -?
    • 你的回答是对的,但我期待数组示例中的非字符串值 [34,-10]
    • 投反对票的能否解释一下原因。
    • 这对我来说更好:num.match(/-?\d+/g).join('')
    【解决方案2】:

    您应该使用带有条件- 符号的正则表达式,例如/-?\d+/,您还应该使用例如parseInt 函数将字符串转换为数字。

    【讨论】:

      【解决方案3】:

      regex 版本(假设输入字符串是正确的csv):

      function getNumbersFromString(numberString){
        return numberString.split(',').map(v => parseInt(v))
      }
      
      console.log(getNumbersFromString("34,-10"))

      【讨论】:

        【解决方案4】:

        为什么在这里使用正则表达式。 split() 和 map() 呢

        function getNumbersFromString(numberString){
          return numberString.split(',').map(Number)
        }
        
        console.log(getNumbersFromString("34,-10"));

        或者输入字符串不是“干净的”并且还包含文本?

        【讨论】:

          【解决方案5】:

          正则表达式:

          This expression 可能会帮助您使用字符列表传递整数:

          • 数字 0-9
          • +
          • -

          [+\-0-9]+ 
          

          如果你愿意,你可以用一个捕获组来包装它,只是为了简单地使用$1进行字符串替换:

          ([+\-0-9]+)
          

          图表:

          此图显示了表达式的工作原理:

          代码:

          function getNumbersFromString(numberString){
            var regex = numberString.match(/[+\-0-9]+/g);
            return regex;
          }
          
          console.log(getNumbersFromString("34, -10, +10, +34"));

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-12-18
            • 1970-01-01
            • 2015-10-01
            • 2012-09-14
            • 2021-07-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多