gpt4 book ai didi

javascript - d h m 时间字符串的正则表达式

转载 作者:行者123 更新时间:2023-11-30 20:57:59 25 4
gpt4 key购买 nike

我无法检查我的字符串是否输入了正确的时间。应该可以这样写:(number)d (number)h (number)m每个部分都可以省略,数字没有限制(例如 2352h)。一些可能性如下:

  • 2424d 23h 15m
  • 523 小时 526 米
  • 235d 252m
  • 829d 926h

我使用以下 RegEx,它工作得很好但有一个问题,即一个字母可以多次使用(例如 52d 23d)。我希望每个字母都可以使用一次。空格是可选的。这是我现在拥有的:

^((\d{0,9}[dh]\s?){0,1}(\d{0,9}m)?){1,3}\s*$

谁能帮帮我?

最佳答案

试试这个正则表达式:

^(?=.*[hmd]$)\d+(?:d\s*)?\d*(?:h\s*)?\d*(?:m\s* )?$

Click for Demo

解释

  • ^ - 断言字符串的开头
  • (?=.*[hmd]$) - 确保字符串以 dhm
  • \d+(?:d\s*)? - 匹配出现 1 次以上的数字后跟可选的 d 后跟 0 次以上的空格
  • \d*(?:h\s*)? - 匹配出现 0 次以上的数字后跟可选的 h 后跟 0 次以上的空格
  • \d*(?:m\s*)? - 匹配 0 次以上的数字后跟可选的 m 后跟 0 次以上的空格
  • $ - 断言字符串结束

另一种选择:^(?=.*[hmd]$)(?:\d+d\s*)?(?:\d+h\s*)?(?:\d+m\s*)?$

关于javascript - d h m 时间字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47459104/

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