代码之家  ›  专栏  ›  技术社区  ›  soccerway

使用regex,以时间格式分隔时间值

  •  1
  • soccerway  · 技术社区  · 3 年前

    text 字符串。下面的是单行打印。我的目标是使用较少的.js行来实现这一点。任何建议都会很有帮助。

    let myArr = [];
    let text = "12:30 am01:00 am10:00 am10:15 am";
    finalTime = text.replace(/[^0-9: ]/g, '');
    console.log(finalTime);
    

    enter image description here

    let myArr = ["12:30", "01:00", "10:00", "10:15"]

    2 回复  |  直到 3 年前
        1
  •  3
  •   Barmar    3 年前

    使用 match 而不是替换。它将返回所有匹配项的数组。

    let text = "12:30 am01:00 am10:00 am10:15 am";
    let myArr = text.match(/[0-9:]+/g);
    console.log(myArr);
        2
  •  1
  •   Nick SamSmith1986    3 年前

    01:00 pm matchAll am pm 并根据需要调整时间:

    let text = "12:30 am01:00 am10:00 pm10:15 am";
    
    myArr = Array.from(text.matchAll(/(0[0-9]|1[012])(:[0-5][0-9])\s+([ap])m/gi),
                       m => (m[3].toLowerCase() == 'a' ? m[1] : (+m[1] + 12)) + m[2]);
    
    console.log(myArr);

    注意,我还调整了regex以确保时间是有效的;如果你知道他们将是你可以取代正则表达式与公正

    (\d\d)(:\d\d)\s+([ap])m