Regex d-h-m字符串的正则表达式

Regex d-h-m字符串的正则表达式,regex,parsley.js,Regex,Parsley.js,我有一个带有欧芹JS模式验证的HTML文本输入,我希望以99d 99m 99h模式验证一个日时分钟字符串。我已经让正则表达式为整个字符串工作(所有三个段都存在(dmh)),但我希望它也验证三个段中是否只有一个或两个存在(00d00h或00h00m或00h或00m或00d) 这是我的模式: (?:(\d+d)\s)?(?:(\d+h)\s)?(?:(\d+m)) 有没有一种方法可以将这些模式分组,这样其他五种模式也可以匹配,而无需再编写几个模式组 (?:(\d+d)\s)?(?:(\d+h)\s

我有一个带有欧芹JS模式验证的HTML文本输入,我希望以99d 99m 99h模式验证一个日时分钟字符串。我已经让正则表达式为整个字符串工作(所有三个段都存在(dmh)),但我希望它也验证三个段中是否只有一个或两个存在(00d00h或00h00m或00h或00m或00d)

这是我的模式:

(?:(\d+d)\s)?(?:(\d+h)\s)?(?:(\d+m))
有没有一种方法可以将这些模式分组,这样其他五种模式也可以匹配,而无需再编写几个模式组

(?:(\d+d)\s)?(?:(\d+h)\s)?(?:(\d+m))?:(?:(\d+d)\s)?(?:(\d+h)\s))?:(?:(\d+h)\s)?(?:(\d+m)?(\d+d)\s)?(\d+h)\s)?(\d+m)\s)

我可能不是100%了解你的需求,但是你不能做一些我下面的版本,添加一些空白模式或其他什么吗

^(\d{2}[dhm]){1,3}$
根据评论进行编辑 这个版本怎么样

^(\d{2}d\s\d{2}h\s\d{2}m)|(\d{2}[dh]\s\d{2}m)|(\d{2}d\s\d{2}[hm])|(\d{2}[dhm])$‌​

我希望在1d 1h 1m段之间需要一个空格。当我尝试下面的正则表达式时,它需要在输入之后使用一个尾随空格来匹配,这与我不希望出现的情况不太一样:
^(\d{1}[dhm]\s){1,3}$
那么:^(\d{2}[dh]\s){0,2}(\d{2}m){1,3}\s*$Matches如果这三个值都存在(0d0h0m)但我可能有这样的情况,即只有0d、0h或0m存在,而没有其他两个值。不确定如何使正则表达式组成为可选的。它们都是可选的。我测试过了。它只需要一个匹配项。当我使用11d或11d 11h进行测试时,它仅在最后一个段后添加空格时匹配,因为\s是组的一部分。如果我使d或h的第一个分组中的\s看起来像\s{0,1},那么它与11d11h11m匹配,中间没有空格。