gpt4 book ai didi

javascript - 用于匹配用户输入并转换为 Javascript 对象的正则表达式

转载 作者:行者123 更新时间:2023-12-05 08:45:14 25 4
gpt4 key购买 nike

我目前正在尝试将一些用户输入解析为一些正则表达式组,以便我可以将以下输入放入输出中。

我目前的正则表达式是

^[0-9]+[d,D,h,H,m,M]$

这成功匹配了单个日期,例如 1d2h。但是,我需要它为每一个动态工作,即使有些不是由用户提供的。

input: "5d"
output: {days: 5, hours: 0, minutes: 0}

input: "1d 2h"
output: {days: 1, hours: 2, minutes: 0}

input: "1d 5h 2m"
output: {days: 1, hours: 5, minutes: 2}

input: "2m"
output: {days: 0, hours: 0, minutes: 2}

输出不一定必须在 js 对象中,简单地使用正则表达式组也是有益的,也是我可以使用的东西。

任何帮助将不胜感激,因为我不确定还能做什么。

最佳答案

您可以扩展您的正则表达式以包括三个命名的捕获组,分别代表天、小时和分钟,然后使用这些组值来填充输出对象:

const parseInterval = s => { 
let res = regex.exec(s) || {}
return {
days : +res.groups.days || 0,
hours : +res.groups.hours || 0,
minutes : +res.groups.minutes || 0
}
}

const input = [ "5d", "1D 2h", "1d 5H 2m", "2M"]
const regex = /(?:(?<days>\d+)d)?\s*(?:(?<hours>\d+)h)?\s*(?:(?<minutes>\d+)m)?/i

const result = input.map(parseInterval)

console.log(result)

关于javascript - 用于匹配用户输入并转换为 Javascript 对象的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73452151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com