正则表达式:在一个字符串javascript中多次检查

时间:2016-02-02 15:48:47

标签: javascript regex

嘿,我需要一个正则表达式来处理以下情况:

- von 08:00-12:00uhr und 12:00-22:00 uhr
- von 08:00-12:00 uhr 
- von 08:00-12:00 uhr
- von 08:00-12:00
- 08:00-12:00

所以正则表达式应该处理这样的输入:

(von)?_?0?[0-23]:[00-59]_?(Uhr|uhr)?((bis)?_?0?[0-23]:[00-59]_?(Uhr|uhr))?

我尝试了很多但是在wiki上阅读后的最佳匹配是:

(von)?([01]\d|2[0-3]):?([0-5]\d)$(uhr|Uhr)?((und)?(von)?([01]\d|2[0-3]):?([0-5]\d)$)

你能告诉我如何处理这个问题吗?我测试Dateformat的方式是正确的吗?

3 个答案:

答案 0 :(得分:1)

这似乎有效:

(von )?([01]\d|2[0-3]):[0-5]\d-([01]\d|2[0-3]):[0-5]\d( ?uhr)?( und ([01]\d|2[0-3]):[0-5]\d-([01]\d|2[0-3]):[0-5]\d( ?uhr)?)?

空格由实际空格字符匹配,\s不仅匹配ascii空间,还匹配大多数类型的空格(例如,也包括标签)。

答案 1 :(得分:0)

这个怎么样:

/([0-2]\d:[0-5]\d\-[0-2]\d:[0-5]\d)/g

您可以在此处试用:https://regex101.com/r/eD0hY1/1

你只对时代感兴趣,对吗?

答案 2 :(得分:0)

我假设您的第一个示例是错误,它应该是

  

von 08:00-12:00 uhr und 12:00-22:00 uhr

而不是

  

von 08:00-12:00uhr和12:00-22:00 uhr

这是我提出的快速解决方案。但是,有一个改进的地方,使用空格字符而不是''(空格)。

(von )?(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]-(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]( uhr)?( und (0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]-(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9] uhr)?

注意:解决方案基于最高投票答案 Regular expression for matching HH:MM time format