你如何匹配军事时间?

时间:2013-02-08 18:54:52

标签: java regex

我正在尝试创建一个有效的Java正则表达式来匹配代表标准“军事时间”的字符串:

String militaryTimeRegex = "^([01]\d|2[0-3]):?([0-5]\d)$";

这给了我一个编译器错误:

  

无效的转义序列(有效转义序列为\ b \ t \ n \ f \ r \“\ \ \ \)

我哪里错了?!?

4 个答案:

答案 0 :(得分:3)

确保使用双反斜杠转义字符:

String militaryTimeRegex = "^([01]\\d|2[0-3]):?([0-5]\\d)$";

单个反斜杠表示转义序列的开始。您需要使用\\来获取String中显示的字符。


要回答您的评论,您目前只匹配19:00。您需要在模式的:00末尾注明额外的String

String militaryTimeRegex = "^([01]\\d|2[0-3]):?([0-5]\\d):?([0-5]\\d)$";

答案 1 :(得分:3)

在Java中,您需要双重转义所有\个字符:

String militaryTimeRegex = "^([01]\\d|2[0-3]):([0-5]\\d):([0-5]\\d)$";

为什么呢?因为\是字符串的转义字符,如果你需要文字\出现在字符串中的某个地方,那么你也必须将其转义:\\

答案 2 :(得分:2)

根据错误消息\d不存在。使用\\d

进行转义

答案 3 :(得分:2)

虽然\d是有效的正则表达式语法,但您需要转义Java字符串中的反斜杠:

String militaryTimeRegex = "^([01]\\d|2[0-3]):?([0-5]\\d)$";
相关问题