我试图创建一个字符串匹配代表标准“军用时间”有效的Java正则表达式:你如何配合军事时间?
String militaryTimeRegex = "^([01]\d|2[0-3]):?([0-5]\d)$";
这给了我一个编译器错误:
Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \)
我要去哪里错了? ?
我试图创建一个字符串匹配代表标准“军用时间”有效的Java正则表达式:你如何配合军事时间?
String militaryTimeRegex = "^([01]\d|2[0-3]):?([0-5]\d)$";
这给了我一个编译器错误:
Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \)
我要去哪里错了? ?
请务必使用双反斜线字符:
String militaryTimeRegex = "^([01]\\d|2[0-3]):?([0-5]\\d)$";
单反斜杠表示转义序列的开始。您需要使用\\
,因为它出现在String
得到的字符。
为了回答您的意见,您目前只匹配19:00
。你需要在你的模式String
年底占额外:00
:
String militaryTimeRegex = "^([01]\\d|2[0-3]):?([0-5]\\d):?([0-5]\\d)$";
感谢@Reimeus - 但是当我执行'布尔B = “19:00:00” .matches(militaryTimeRegex)',我得到'FALSE'。还有一些事情在这里......再次感谢! (+1) – IAmYourFaja 2013-02-08 18:59:21
没错,只是重复你的最后一个匹配的组和你整理 – Reimeus 2013-02-08 19:07:39
在Java中,你需要仔细逃避所有\
字符:
String militaryTimeRegex = "^([01]\\d|2[0-3]):([0-5]\\d):([0-5]\\d)$";
为什么?因为\
是字符串的转义字符,并且如果您需要文字\
出现在字符串内某处,那么您也必须将其转义:\\
。
感谢@Oscar洛佩兹。 (+1) - 请在Reimeus的回答下看到我的评论 - 我对你有同样的问题! – IAmYourFaja 2013-02-08 19:01:52
@DirtyMikeAndTheBoys我修正了正则表达式,请参阅我的更新回答 – 2013-02-08 19:06:14
根据错误信息\d
不存在。与\\d
谢谢@ user000001(+1) - 请参阅Reimeus'answe下的评论 - 我对您有同样的问题! – IAmYourFaja 2013-02-08 19:00:52
虽然\d
是有效的正则表达式语法逃避它,你需要转义反斜线在Java字符串:
String militaryTimeRegex = "^([01]\\d|2[0-3]):?([0-5]\\d)$";
谢谢@ F.J。 (+1) - 请下Reimeus' answe我的意见 - 我有同样的问题为您服务! – IAmYourFaja 2013-02-08 19:00:28
什么是“谷歌搜索”? – IAmYourFaja 2013-02-08 18:57:32
http://en.wikipedia.org/wiki/Google_(verb) – 2013-02-08 18:58:20
@DirtyMikeAndTheBoys它的意思是:去http://www.google.com搜索错误 – 2013-02-08 18:58:40