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

Regex: check multiple times in one string javascript

本文关键字:javascript 字符串 检查 一个 正则表达式      更新时间:2023-09-26

嘿,我需要以下情况的正则表达式:

- 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))?

我尝试了很多,但在维基中阅读后的最佳匹配是:

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

你能给我一个建议,我该如何处理这个问题吗?我测试日期格式的方式是否正确?

似乎有效:

(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 空格,还匹配大多数类型的空格(例如制表符)。

我假设你的第一个例子是一个错误,它应该是

冯 08:00-12:00 乌尔 和 12:00-22:00 乌尔

而不是

冯 08:00-12:00 乌尔 和 12:00-22:00 乌尔

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

(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)?

注意:该解决方案基于投票最多的答案用于匹配 HH:MM 时间格式

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

你可以在这里尝试一下:https://regex101.com/r/eD0hY1/1

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