Csharp/C#教程:Timespan-Regex与Days-Portion分享


Timespan-Regex与Days-Portion

我刚尝试了几百个(如果不是数千个……)RegEx可以得到我想要的东西……但是它们都没有用。

我只是在寻找一个正则表达式,代表TimeSpan days.hours:minutes:seconds :7.00:00:00代表“7天”

遗憾的是这个不起作用:

(dd).(dd):(([0-6][0])|([0-5][0-9])):(([0-6][0])|([0-5][1-9]))

这是因为您的正则表达式模式预计会有2位数天,而您只有1位数。 只需将第一个数字选为?

 (d?d).(dd):(60|([0-5][0-9])):(60|([0-5][0-9])) 

或者更好,只需使用+来匹配一个或多个,因为该模式仍然不会匹配100天

 (d+).(dd):(60|([0-5][0-9])):(60|([0-5][0-9])) 

这个在技术上更正确,也可能更有效:

 d+.((0?d)|(1d)|(2[0-3]))(:[0-5]d){2} 

接受的答案似乎不适用于基本情况。

遵循TimeSpan解析规则,我提出了这种模式。

^((?:-?0*d+.)?(?:0*)(?:2[0-3]|1[0-9]|[0-9]))(?::0*([0-5]?[0-9]))?(?::0*((?:[0-5]?[0-9])(?:.d{0,7})?))?$

注意此模式将通过10.12格式,而MSDN将此标记为无效格式。 这应该是IMO的有效格式。

这个对我很有用。

 ^(d{1,2}|d.d{2}):([0-5]d):([0-5]d)(.d+)?$ 

以下是不同输入的validation结果。

上述就是C#学习教程:Timespan-Regex与Days-Portion分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 +-----------------------+-------+ | Input | Valid | +-----------------------+-------+ | 1.10:14:15.1 | True | +-----------------------+-------+ | .10:14:15.1 | False | +-----------------------+-------+ | 1.10:14:15. | False | +-----------------------+-------+ | 1.10:14:15.123haha456 | False | +-----------------------+-------+ | 10:14:15.1 | True | +-----------------------+-------+ | 100:14:15.1 | False | +-----------------------+-------+ | 6:14:15.1 | True | +-----------------------+-------+ | :14:15.1 | False | +-----------------------+-------+ | 00:14:15 | True | +-----------------------+-------+ 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1000172.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐