日期的正则表达式,有什么不对??

问题描述

只是判断一个字符串是不是以“yyyy-mm-dd”的格式输入的我写了一个貌似不对"[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}"[b][/b]问题补充:String[] dataArr5 = { "1984-10-20", "2008-03-12", "boon", "buin" ,"bynn"}; for (String str5 : dataArr5) { String patternStr="^((((19){1}|(20){1})d{2})|d{2})[-\s]{1}[01]{1}d{1}[-\s]{1}[0-3]{1}d{1}$"; boolean result5 = Pattern.matches(patternStr, str5); if (result) { System.out.println("字符串"+str5+"匹配模式"+patternStr+"成功"); } else{ System.out.println("字符串"+str5+"匹配模式"+patternStr+"失败"); } 怎么结果都是失败阿我是个初学者没学过正则表达式谢谢了

解决方案

这个应该行了 String patternStr = "^((((19){1}|(20){1})(\d){2})|(\d){2})[-\s]{1}[01]{1}(\d){1}[-\s]{1}[0-3]{1}(\d){1}$";
解决方案二:
唔。。。这个是判断XXXX-XX-XX 或 XXXX XX XX 或 XXXX-X-X格式的正则,不好意思,看错了,按上面的改,应该没问题了
解决方案三:
这个也有问题。。。。。。他的月份和日期check的还是不完善。。。。
解决方案四:
d{2}这个有问题,是指字符d
解决方案五:
对不起, 我试了下,的确有问题!你可以参考下java.util.regex.Pattern的JavaDoc将这个正则改一下, 上面介绍的很详细!
解决方案六:
测试了一把, 能匹配比较正规的日期public void testRegex() {assertTrue(Pattern.compile("[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}").matcher("2008-08-08").matches());assertFalse(Pattern.compile("[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}").matcher("a008-08-08").matches());assertTrue(Pattern.compile("[0-9]{4}-[0-9]{2}-[0-9]{2}").matcher("2008-08-08").matches());assertFalse(Pattern.compile("[0-9]{4}-[0-9]{2}-[0-9]{2}").matcher("a008-08-08").matches());}但显然不够严密, 贴一个由不知名的仁兄贡献的日期正则:/** * 匹配日期 <br> * * 格式(首位不为0): XXXX-XX-XX 或 XXXX XX XX 或 XXXX-X-X <br> * * 范围:1900--2099 <br> * * 匹配 : 2005-04-04 <br> * * 不匹配: 01-01-01 * */public static final String date_regexp = "^((((19){1}|(20){1})d{2})|d{2})[-\s]{1}[01]{1}d{1}[-\s]{1}[0-3]{1}d{1}$";// 匹配日期

时间: 2024-08-01 03:19:18

日期的正则表达式,有什么不对??的相关文章

验证日期的正则表达式比较全面地验证

原文:验证日期的正则表达式比较全面地验证  1.验证日期的正则表达式加入闰年的判断以及思路分析 进入正题之前,我们需要澄清两个概念: 一,什么是合法的日期范围?对于不同的应用场景,这个问题有不同的解释.这里采纳MSDN中的约定: DateTime 值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间. 二,关于闰年的阐释.人民教育出版社小学数学室的解释浅明易懂(medi

Java日期时间正则表达式 Java日期时间操作的方法

1. 获得Calendar实例:Calendar c = Calendar.getInstance(); 2. 定义日期/时间的格式:SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 3. 把日期/时间转换成固定格式,使用SimpleDateFormat的format()方法: String datetime = sdf.format(c.getTime()); 4. 把字符串转换成日期/时间,使用Si

常用的日期时间正则表达式

常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到. 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(?(.0?2)(?=.{3,4}(1[6-9]|[2-9]d)(0[48]|[2468][048]|[13579][26])|(16|[2468][048]|[3579][26])00))|0?[1-9]|1d|2[0-8])(?<sep>[/.-])(?<month

javascript日期数字正则表达式

网页特效日期数字正则表达式 号码正则 /^d{3,4}-d{7,8}(-d{3,4})?$/ 区号必填为3-4位的数字,区号之后用"-"与电话号码连接 ^d{3,4}- 电话号码为7-8位的数字 d{7,8} 分机号码为3-4位的数字,非必填,但若填写则以"-"与电话号码相连接 (-d{3,4})? <script type="text/javascript"> function testrgexp(re, s){ // 参数说明 r

URL重写可删节日期模式---正则表达式之强力应用

日期|正则 最近忙着自己的博客程序,自然而然就转到了博客中老生长谈的URL重写问题.一个原因是在多用户博客系统中的一个面子问题,本来想拿我的CSDN博客http://blog.csdn.net/joshualang来说事,想想还是用我的空间(http://www.tyoo.net)吧,因为这是我的博客完功之后的去所了. 像http://www.tyoo.net/blog/joshualang 如若不进行必要的URL重写,就会出http://www.tyoo.net/blog/default.as

帮写出验证日期的正则表达式

问题描述 是js验证的如:2009-05-25这样的日期帮我写出详细的代码是在jsp中写的 解决方案 解决方案二:哎又见月经贴···解决方案三:引用1楼zn85600301的回复: 哎又见月经贴··· +解决方案四:ls是什么意思呢?解决方案五:d{4}(-d{2}){2}解决方案六:请搜索,正则表达式日期提问前先搜索是对回答者的尊重,给分,谢谢!^((((1[6-9]|[2-9]d)d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]d|3[01]))|(((1[6-9]

日期验证正则表达式

   代码如下 复制代码 $arr_date = array( '2004-06-01', '2005-0x-10', '12-12-12', '2000-12-25 00:10:20', '2007-12-05' ); for ($i=0; $i<5; ++$i) {  $date = $arr_date[$i];  if(ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs))  {      echo "

日期格式正则表达式javascript代码

格式是   日/月/年  代码如下 复制代码 //日期格式     ['date_au', function(v) {       if (Vanadium.validators_types['empty'].test(v)) return true;           var regex = /^(d{2})/(d{2})/(d{4})$/;       if (!regex.test(v)) return false;       var d = new Date(v.replace(re

使用公式提取Excel中的日期后发现格式不对

  如果你要提取Excel单元格中的日期,很可能会遇到日期格式不对,甚至是无论如何设置日期格式,结果还是不对. 下面给你举个例子并给出解决的方案. 假设A列,保存的是部分员工的身份证号码,当然,在A列中,也就保存了员工的出身日期. 假如A1中的身份证号码是:532621195701086015 首先说明,A列的数据格式为常规,就是常规,不允许改变格式. 之后,当你试图将A1中的身份证号码中的出生日期截取后放在B1时,那么,我们其实可以使用函数来截取,一般,使用MID函数最为妥当了. 公式自然就是