gpt4 book ai didi

javascript - 如果没有组返回结果,如何构建不返回空字符串的正则表达式

转载 作者:行者123 更新时间:2023-12-04 03:42:22 25 4
gpt4 key购买 nike

我正在尝试构建一个正则表达式来匹配时间表小时条目,其中用户以 20h 50m 格式输入他的时间。

在此格式中,用户可以仅输入小时 20h,或仅输入分钟 50m,或同时输入小时和分钟 20h 50m

示例匹配

45m
1h
2h 45m

数字可以是 2050 以外的任何数字。

我想出了这个正则表达式 ((([0-9]+h)\s(​​[0-9]+m))|([0-9]+h)|([0- 9]+m)){1},它很长,我正在努力减少它。

所以我尝试了不同的解决方案:((\d+h)?([\s]*(\d+m))?) https://regex101.com/r/ZEBsle/1/ .但是这个解决方案的问题是它匹配空字符串而不匹配像 2h 45m 这样的模式。

如何修改最后一个正则表达式以匹配以下格式?

45m
1h
2h 45m

最佳答案

这是我的看法:

/(?<=\b)\d+h \d+m|\d+[hm](?=\b)/g

Example on Regex101

const str = `45m
1h
4h 35m
some text before 2h 45m and after
travelled 66miles
2m 45h this one are inversed, so treat them separately
245m`;

const times = str.match(/(?<=\b)\d+h \d+m|\d+[hm](?=\b)/g);
console.log(times);

关于javascript - 如果没有组返回结果,如何构建不返回空字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65747912/

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