用于d h m字符串的正则表达式

时间:2015-02-11 19:18:35

标签: regex parsley.js

我有一个带有Parsley JS模式验证的HTML文本输入,我希望在99d 99m 99h的模式中验证一小时的分钟字符串。我正在使用正则表达式来处理整个字符串(所有三个段都存在(dmh))但是我还希望它还验证三个段中是否只有一个或两个(00d 00h或00h 00m)或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)

1 个答案:

答案 0 :(得分:0)

我可能不是百分之百满足你的需求,但是你不能在这里做一些版本的东西,添加一些空白模式或什么?

^(\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])$‌​