求一个 正则表达式, 谢谢

liqiang208 2008-04-28 11:29:15
如题, 要求如下:
要求验证年月

1. 一定要6位长度,例如 200804
2. 前四位,要大于2000,小于3000
3. 最后两位,要大于等于01, 小于等于12

谢谢各位了!
...全文
116 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
dgqbcht 2008-04-29
  • 打赏
  • 举报
回复
http://www.java2000.net/viewthread.jsp?tid=471
日期的完全判断
codefreeman 2008-04-29
  • 打赏
  • 举报
回复
study
jiaping108 2008-04-29
  • 打赏
  • 举报
回复
郁闷,没注意LZ是在java中用还是在JS中用.....
在java中用
2\\d{3}(0[1-9]|1[0|1|2])
就行了,10楼的已经给出答案了,不好意思~~呵呵
jiaping108 2008-04-29
  • 打赏
  • 举报
回复
这个函数完全可以实现你要求的功能了,已经测试过,呵呵return了值是为了你如果是用在SUBMIT的情况下写的~
<html>
<head>
<script type="text/javascript">
function checkDate()
{
var date = document.getElementById("test").value;
if(date.length != "6" || !date.match(/^\d+$/))//如需校验输入是否为数字,可以用"^\d+$"正则判断一下
{
alert("输入值长度应该为6的数字");
return false;
}
else{
var year = date.substr(0,4);
var month = date.substr(4,2);
if(year < 2000 || year > 3000)
{
alert("输入的年份要在2000到3000之间");
return false;
}
if(month < 01 || month > 12)
{
alert("输入的月份要在01到12之间");
return false;
}
return true;
}

}

</script>
</head>
<body>
<form>
<table>
<tr>
<td><input id="test" type="text" name="ss" value=""></td>
<td><input type="button" name="sub" value="提交" onclick="checkDate()"></td>
</tr>
</table>
</form>
</body>
</html>
leojay1 2008-04-29
  • 打赏
  • 举报
回复
试试这个吧
2\\d{2}[1-9]((0[1-9])|(1[0-2]))
nihuajie05 2008-04-29
  • 打赏
  • 举报
回复

public class RTimeTest
{
public static void main(String[] args)
{
String regular="2\\d{3}(0[1-9]|1[0-2])";
String test1="209001";
String test2="300012";
String test3="200913";
System.out.println(test1.matches(regular));
System.out.println(test2.matches(regular));
System.out.println(test3.matches(regular));

}
}

结果
true
false
false
jiaping108 2008-04-29
  • 打赏
  • 举报
回复
在JS用不着用正则,可以直接用substring或者substr方法截取后比较就行了~
jack462 2008-04-29
  • 打赏
  • 举报
回复
对用正则表达式就好了,8楼的也不错,lz可以看看那个更适合你

gzdiablo 2008-04-29
  • 打赏
  • 举报
回复
^\\d{3}(0[1-9]|1[0-2])$
nihuajie05 2008-04-29
  • 打赏
  • 举报
回复
2\\d{3}(0[1-9]|1[0-2])
这样就可以了
nihuajie05 2008-04-29
  • 打赏
  • 举报
回复
2\\d{3}((0[1-9])|(1[0-2]))
newjavamaker 2008-04-29
  • 打赏
  • 举报
回复
String date="2008-04-11"; (这个date可以是你从数据库中获得的值)
date.substring(0,7);
System.out.println(date.substring(0,6); 结果 2008-04
要200804也可以啊
date.substring(0,4);
date.substring(6,7);
String date1=date.substring(0,4)+date.substring(5,7);
System.out.println(date1); 结果 200804
datex=date.substring(0,4);
datey=date.substring(8,10);
判断前四为大于2000也没有问题啊
数据库中查询语句 select * from (table name) where (datex) >2000 and (datex)<3000 and (datey)
>=01 and (datey)<=12

你自己尝试用下substring 截取字符串应该不难出结果
chenhongxin 2008-04-29
  • 打赏
  • 举报
回复
可以截取 前四位 后2为分别来判断即可
chenhongxin 2008-04-29
  • 打赏
  • 举报
回复
要求验证年月

1. 一定要6位长度,例如 200804
2. 前四位,要大于2000,小于3000
3. 最后两位,要大于等于01, 小于等于12

nanjg 2008-04-29
  • 打赏
  • 举报
回复
可以截取 前四位 后2为分别来判断即可
liqiang208 2008-04-29
  • 打赏
  • 举报
回复
好像没有呀, 顶一下等等看
chengweiv5 2008-04-29
  • 打赏
  • 举报
回复
干脆比较大小算了
正则表达式善于处理文本,对匹配、搜索和替换等操作都有意想不到的作用。正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率。 正则表达式应用于程序设计语言中,首次是出现在 Perl 语言,这也让 Perl 奠定了正则表达式旗手的地位。现在,它已经深入到了所有的程序设计语言中,在程序设计语言中,正则表达式可以说是标准配置了。 Java 中从 JDK 1.4 开始增加了对正则表达式的支持,至此正则表达式成为了 Java 中的基本类库,使用时不需要再导入第三方的类库了。Java 正则表达式的语法来源于象征着正则表达式标准的 Perl 语言,但也不是完全相同的,具体的可以参看 Pattern 类的 API 文档说明。 我在一次偶然中发现了位于 java.sun.com 站点上的 Java Tutorial,也在那里看到了关于 Java 的正则表达式教程,感觉它不同于其他的正则表达式教程,文中以大量的匹配实例来进行说明。为了能让 Java 学习者能更好地使用正则表达式,就将其完整地译出了。该教程中所介绍的正则表达式应用仅仅是最为简单的(并没有完全地涉及到 Pattern 类支持的所有正则表达式语法,也没有涉及到高级的应用),适合于从未接触过或者是尚未完全明白正则表达式基础的学习者。在学习完该教程后,应该对正则表达式有了初步的了解,并能熟练地运用 java.util.regex 包中的关于正则表达式的类库,为今后学习更高级的正则表达式技术奠定良好的基础。 教程中所有的源代码都在 src 目录下,可以直接编译运行。由于当前版本的 Java Tutorial 是基于 JDK 6.0 的,因此其中的示例程序也用到了 JDK 6.0 中的新增类库,但正则表达式在 JDK 1.4 就已经存在了,为了方便大家使用,改写了部分的源代码,源代码类名中后缀为"V4"的表示用于 JDK 1.4 或以上版本,"V5"的表示用于 JDK 5.0 或以上版本,没有这些后缀的类在各个版本中均可以正常使用。 由于译者的水平和技术能力有限,译稿虽经多次校对,难免有疏漏之处,敬请大家批评和指正。若有发现不妥之处,请发送邮件至 FrankieGao123@gmail.com,我会在 blog 中进行勘误,谢谢

81,090

社区成员

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

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