【问题标题】:Parsing strings with JS friendly regex使用 JS 友好的正则表达式解析字符串
【发布时间】:2017-01-03 01:34:18
【问题描述】:

我正在尝试使用必须对 JS 友好的正则表达式来解析字符串的某些部分。我正在使用 Chrome 的 webscraper.io 扩展构建一个刮板。但我遇到了麻烦。我需要最小和最大寿命,但它们在一个字符串中“寿命:10 到 12 年”

如何使用正则表达式返回“10”作为最小值,另一个返回“12”作为最大值?需要尽可能简单。理想情况下,我需要为每个运行一个单独的选择器。所以这将是两个不同的正则表达式。我可以用 \d+ 抓取 10,但我不知道如何隔离字符串中的最后一个数字。非常感谢任何帮助!

【问题讨论】:

    标签: javascript regex string parsing


    【解决方案1】:

    要从String 获取所有数字,您可以使用\d+。因此,您可以使用while 循环将结果添加到数组中,并从中获取最小值/最大值:

    示例 1 - 使用函数

    var min;
    var max;
    var text = "Being under 18 may require parental signature. "
             + "You must be at least 16 years in older to apply";
    
    function getMinAndMax(string){
        var p = RegExp("\\d+", "g"),
    
        match, results = [];
    
        while (match = p.exec(string))
            results.push(match[0]); // [18, 16]
    
        return [Math.min.apply(null, results), // 16
        Math.max.apply(null, results)];        // 18
    }
    
    var ages = getMinAndMax(text); // [16, 18]
    console.log("Min: " + ages[0]);
    console.log("Max: " + ages[1]);
    

    https://jsfiddle.net/oro4djpq/

    示例 2 - 直接

    var p = RegExp("\\d+", "g"),
    text = "Life Span: 10 to 12 years",
    match, results = [];
    
    while (match = p.exec(text))
        results.push(match[0]); // [10, 12]
    
    console.log("Min: " + Math.min.apply(null, results)); // [10]
    console.log("Max: " + Math.max.apply(null, results)); // [12]
    

    https://jsfiddle.net/rzo31teb/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 2019-12-10
      • 2010-11-22
      相关资源
      最近更新 更多