【问题标题】:Javascript extract numbers from a stringJavascript从字符串中提取数字
【发布时间】:2012-01-12 01:21:39
【问题描述】:

我想在 javascript 中从字符串中提取数字,如下所示:

如果 string = 'make1to6' 我想提取整个字符串中 'to' 子字符串前后的数字字符。即要提取 1 和 6

字符串的长度不固定,最长为 10 个字符。字符串中 'to' 两侧的数字最多为两位数。

可能的字符串值:

  • sure1to3
  • ic3to9ltd
  • anna1to6
  • joy1to4val
  • make6to12
  • ext12to36

想到类似的东西:

function beforeTo(string) {
    return numeric_value_before_'to'_in_the_string;
}

function afterTo(string) {
    eturn numeric_value_after_'to'_in_the_string;
}

我将使用这些返回值进行一些计算。

【问题讨论】:

    标签: javascript regex substring slice


    【解决方案1】:

    这是一个示例函数,它将返回一个表示两个数字的数组,如果不匹配,则返回 null

    function extractNumbers(str) {
        var m = /(\d+)to(\d+)/.exec(str);
        return m ? [+m[1], +m[2]] : null;
    }
    

    您可以调整该正则表达式以满足您的需要,例如使其不区分大小写:/(\d+)to(\d+)/<em><strong>i</strong></em>.exec(str)

    【讨论】:

    • @Sandy505:嗯,你认得正则表达式,对吧? /(\d+)to(\d+)/。我们将从那开始。 \d 表示“任何数字,从 0 到 9”。 \d+ 表示“至少一位数”。 to 只匹配单词“to”。 .exec 对字符串执行表达式,并将其转换为匹配数组。所以m[1] 是第一组数字,m[2] 是第二组数字......如果匹配,我们将它们返回到数组中。而已。您现在可以使用myArray[0] 访问第一个号码,使用myArray[1] 访问第二个号码。
    【解决方案2】:

    您可以使用正则表达式来查找它:

    var str = "sure1to3";
    var matches = str.match(/(\d+)to(\d+)/);
    if (matches) {
        // matches[1] = digits of first number
        // matches[2] = digits of second number
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      相关资源
      最近更新 更多