正则表达式如何表示 或者 和 空格这两个意思?

高傲的苹果 2014-05-14 02:23:24
String str="2014-05-05T14:07:00";
Pattern pattern = Pattern.compile("^[1-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-5][0-9]:[0-5][0-9]$");
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.matches());

这是一段匹配时间的正则表达式,现在如果T前面有空格的话就会匹配失败。
我想写成T前面有空格的也能匹配上,(2014-05-05 T14:07:00)这样,意思就是写成T或者空格(也许会不止一个空格)
都行。麻烦有会的大神指点一下,多谢。
...全文
414 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小绵羊 2014-05-14
  • 打赏
  • 举报
回复
引用 5 楼 suciver 的回复:
楼主的意思是写成T可以T前后有空格,或者不写T就是空格吧。 ^[1-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9](\\s*T\\s*|\\s*)?[0-2][0-9]:[0-5][0-9]:[0-5][0-9]$
(\\s*T\\s*|\\s+)才对,用*的话不打空格也是可以的,后面那个?似乎也没什么用
suciver 2014-05-14
  • 打赏
  • 举报
回复
楼主的意思是写成T可以T前后有空格,或者不写T就是空格吧。 ^[1-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9](\\s*T\\s*|\\s*)?[0-2][0-9]:[0-5][0-9]:[0-5][0-9]$
tony4geek 2014-05-14
  • 打赏
  • 举报
回复
[1-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]\s*T[0-2][0-9]:[0-5][0-9]:[0-5][0-9]
小绵羊 2014-05-14
  • 打赏
  • 举报
回复
空格在正则里可以直接打个空格或者用\\s来表示空白字符

" *"或者"\\s*"都能表示任意个空格
贴一段我自己写的
"^([1-9]\\d{3})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(\\s*T)(0[1-9]|1\\d|2[0-4]):([0-5]\\d):([0-5]\\d)$"
yueyuexiong 2014-05-14
  • 打赏
  • 举报
回复
String str=Date.toString().replaceAll(" ", "");Date是时间变量
yueyuexiong 2014-05-14
  • 打赏
  • 举报
回复
用String 的方法分割一下,写成两个正则,在match前先trim() 一下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧