asp 日期格式 正则表达式

fylhpu 2008-12-05 04:00:55
求一正则表达式
标准的日期格式为YYYY-MM-DD或YYYY/MM/DD或YYYYMMDD
当输入的日期不为以上格式时,提示日期格式不对
例如输入YYYY-MMDD或YYYYMM-DD时要报错!!
...全文
1174 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
fylhpu 2008-12-09
  • 打赏
  • 举报
回复

<script language="javascript">
function chkDate(sDate)
{
for (i=0;i<sDate.length;i++)
{
sDate=sDate.replace("/","-");
}
var r=/\d{4}(?:-\d{1,2}){0,2}/
//正则表达式,判断是否为yyyy-mm-dd,yyyy-mm,yyyy格式
if(sDate.match(r)==sDate)
{
var arr=sDate.split("-")
switch(arr.length)
{
//根据不同的yyyy-mm-dd,yyyy-mm格式判断年月日数字是否正确
case 3:
var tmpDate=new Date(arr[0],arr[1],arr[2]);
if(tmpDate.getMonth()==arr[1] && tmpDate.getFullYear()==arr[0]) return true;
break;
case 2:
if(arr[1]<13) return true;
break;
case 1:
if(arr[0].length==4) return true;
break;
default:
return false;
}
}
return false;
}
</script>

高手没看到吗?哪边出问题了,为什么2008-12-01会报不合法?
fylhpu 2008-12-09
  • 打赏
  • 举报
回复
没有人帮忙吗?
toury 2008-12-09
  • 打赏
  • 举报
回复
呵呵:)

<script>
function ValidDate(s){
var pattern=/^(\d{4})-(\d{1,})-(\d{1,})$/i
var matches=s.match(pattern);
if(matches){ //匹配 yyyy-mm-dd 的形式
var tempDate=new Date(matches[1],matches[2]-1,matches[3]);
if(tempDate.getYear()!=matches[1]||tempDate.getMonth()!=(matches[2]-1)||tempDate.getDate()!=matches[3]){//检查是否正确日期,比如9999-99-99等形式
alert("日期不正确!");
return false;
}
}
else{
alert("格式错误");
return false;
}
return true;
}

</script>
<input type=text name=a id=a onpropertychange='javascript:return ValidDate(this.value)'> IE
<input type=text name=a id=a oninput='javascript:return ValidDate(this.value)'> FF
fylhpu 2008-12-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zzxap 的回复:]
function isdate(strr)
{
var str=document.getElementById(strr).value;
if(str.length <7 || str.length>15)
{
alert('請輸入日期');
document.getElementById(strr).focus();
document.getElementById(strr).select();
return false;
}
var pat=/^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|((…
[/Quote]
你的正则,我在ASP里执行不了,在DRAEMWEAVE的代码里的颜色是蓝色的而不是绿色的
zzxap 2008-12-06
  • 打赏
  • 举报
回复
function isdate(strr)
{
var str=document.getElementById(strr).value;
if(str.length<7 || str.length>15)
{
alert('請輸入日期');
document.getElementById(strr).focus();
document.getElementById(strr).select();
return false;
}
var pat=/^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/;
if(pat.test(str))
{
return true;
}
else
{
alert('請輸入正确日期格式');
document.getElementById(strr).focus();
document.getElementById(strr).select();
return false;
}
fylhpu 2008-12-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 virgo2008 的回复:]
上面的我测试了下,能验证出来!
[/Quote]
上面的月份00会认为合法,而月份12会认为不合法
你可以试下2008-00-01和2008-12-01
fylhpu 2008-12-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 virgo2008 的回复:]
<script language="javascript">
function chkDate(sDate)
{
var x=sDate.length
for (i=0;i <x;i++)
{
sDate=sDate.replace("/","-");
}
var r=/\d{4}(?:-\d{1,2}){0,2}/
//正则表达式,判断是否为yyyy-mm-dd,yyyy-mm,yyyy格式
if(sDate.match(r)==sDate)
{
var arr=sDate.split("-")

[/Quote]
上面的验证的是yyyy-mm-dd,yyyy-mm,yyyy格式
而我要的是YYYY-MM-DD,YYYYMMDD,YYYY/MM/DD
三个无法全部实现,至少要实现YYYY-MM-DD,YYYYMMDD
请高手不吝赐教!
zjzb0409 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 virgo2008 的回复:]
<script language="javascript">
function chkDate(sDate)
{
var x=sDate.length
for (i=0;i <x;i++)
{
sDate=sDate.replace("/","-");
}
var r=/\d{4}(?:-\d{1,2}){0,2}/
//正则表达式,判断是否为yyyy-mm-dd,yyyy-mm,yyyy格式
if(sDate.match(r)==sDate)
{
var arr=sDate.split("-")

[/Quote]

不错
virgo2008 2008-12-05
  • 打赏
  • 举报
回复
上面的我测试了下,能验证出来!
virgo2008 2008-12-05
  • 打赏
  • 举报
回复
<script language="javascript">
function chkDate(sDate)
{
var x=sDate.length
for (i=0;i<x;i++)
{
sDate=sDate.replace("/","-");
}
var r=/\d{4}(?:-\d{1,2}){0,2}/
//正则表达式,判断是否为yyyy-mm-dd,yyyy-mm,yyyy格式
if(sDate.match(r)==sDate)
{
var arr=sDate.split("-")
switch(arr.length)
{
//根据不同的yyyy-mm-dd,yyyy-mm格式判断年月日数字是否正确
case 3:
var tmpDate=new Date(arr[0],arr[1],arr[2]);
if(tmpDate.getMonth()==arr[1] && tmpDate.getFullYear()==arr[0]) return true;
break;
case 2:
if(arr[1]<13) return true;
break;
case 1:
if(arr[0].length==4) return true;
break;
default:
return false;
}
}
return false;
}
</script>
<input type="text" name="txtdate" id="txtdate" size="20"><br>
<input type="button" name="Submit2" onclick="if (chkDate(document.all.txtdate.value)==false) {alert('输入的日期不合法!');document.all.txtdate.select();document.all.txtdate.focus();} else alert ('输入的日期合法。');" " value="CheckDate">

fylhpu 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 virgo2008 的回复:]
"^\\d{2,4}[\\/\\-]?((((0?[13578])|(1[02]))[\\/|\\-]?((0?[1-9]|[0-2][0-9])|(3[01])))|(((0?[469])|(11))[\\/|\\-]?((0?[1-9]|[0-2][0-9])|(30)))|(0?[2][\\/\\-]?(0?[1-9]|[0-2][0-9])))$"
你用了正则提示什么错误啊?
[/Quote]
不执行啊
fylhpu 2008-12-05
  • 打赏
  • 举报
回复

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>日期合法性判断</title>
<script language="javascript">
function chkDate(sDate)
{
for (i=0;i<sDate.length;i++)
{
sDate=sDate.replace("/","-");
}
var r=/\d{4}(?:-\d{1,2}){0,2}/
//正则表达式,判断是否为yyyy-mm-dd,yyyy-mm,yyyy格式
if(sDate.match(r)==sDate)
{
var arr=sDate.split("-")
switch(arr.length)
{
//根据不同的yyyy-mm-dd,yyyy-mm格式判断年月日数字是否正确
case 3:
var tmpDate=new Date(arr[0],arr[1],arr[2]);
if(tmpDate.getMonth()==arr[1] && tmpDate.getFullYear()==arr[0]) return true;
break;
case 2:
if(arr[1]<13) return true;
break;
case 1:
if(arr[0].length==4) return true;
break;
default:
return false;
}
}
return false;
}
</script>
</head>
<body>
<input type="text" name="txtdate" size="20"><br>
<input type="button" name="Submit2" onclick="if (chkDate(document.all.txtdate.value)==false) {alert('输入的日期不合法!');document.all.txtdate.select();document.all.txtdate.focus();} else alert ('输入的日期合法。');" value="CheckDate">
</body>
</html>

有没有高手帮改一下其中的正则表达式
正确格式为:yyyy-mm-dd,yyyymmdd,yyyy/mm/dd
virgo2008 2008-12-05
  • 打赏
  • 举报
回复
你用了正则提示什么错误啊?
xxxxxxxxia 2008-12-05
  • 打赏
  • 举报
回复
这是目前我发现最完整的
"^(19|20)\d{2}[\-\/\.](0?\d|1[012])[\-\/\.](0?\d|[12]\d|3[01])$"
'"^\d{4}[\-\/\.]\d{1,2}[\-\/\.]\d{1,2}$"
'"^(?:(?:1[6-9]|[2-9]\d)?\d{2}[\/\-\.](?:0?[1,3-9]|1[0-2])[\/\-\.](?:29|30))(?: (?:0?\d|1\d|2[0-3])\:(?:0?\d|[1-5]\d)\:(?:0?\d|[1-5]\d)(?: \d{1,3})?)?$|^(?:(?:1[6-9]|[2-9]\d)?\d{2}[\/\-\.](?:0?[1,3,5,7,8]|1[02])[\/\-\.]31)(?: (?:0?\d|1\d|2[0-3])\:(?:0?\d|[1-5]\d)\:(?:0?\d|[1-5]\d)(?: \d{1,3})?)?$|^(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])[\/\-\.]0?2[\/\-\.]29)(?: (?:0?\d|1\d|2[0-3])\:(?:0?\d|[1-5]\d)\:(?:0?\d|[1-5]\d)(?: \d{1,3})?)?$|^(?:(?:16|[2468][048]|[3579][26])00[\/\-\.]0?2[\/\-\.]29)(?: (?:0?\d|1\d|2[0-3])\:(?:0?\d|[1-5]\d)\:(?:0?\d|[1-5]\d)(?: \d{1,3})?)?$|^(?:(?:1[6-9]|[2-9]\d)?\d{2}[\/\-\.](?:0?[1-9]|1[0-2])[\/\-\.](?:0?[1-9]|1\d|2[0-8]))(?: (?:0?\d|1\d|2[0-3])\:(?:0?\d|[1-5]\d)\:(?:0?\d|[1-5]\d)(?: \d{1,3})?)?$"
再给你个简单点但比较实用的
^(19|20)\d{2}[\-\/\.](0?\d|1[012])[\-\/\.](0?\d|[12]\d|3[01])$
fylhpu 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 virgo2008 的回复:]
"^\\d{2,4}[\\/\\-]?((((0?[13578])|(1[02]))[\\/|\\-]?((0?[1-9]|[0-2][0-9])|(3[01])))|(((0?[469])|(11))[\\/|\\-]?((0?[1-9]|[0-2][0-9])|(30)))|(0?[2][\\/\\-]?(0?[1-9]|[0-2][0-9])))$"
[/Quote]
用不了
virgo2008 2008-12-05
  • 打赏
  • 举报
回复
"^\\d{2,4}[\\/\\-]?((((0?[13578])|(1[02]))[\\/|\\-]?((0?[1-9]|[0-2][0-9])|(3[01])))|(((0?[469])|(11))[\\/|\\-]?((0?[1-9]|[0-2][0-9])|(30)))|(0?[2][\\/\\-]?(0?[1-9]|[0-2][0-9])))$"
fylhpu 2008-12-05
  • 打赏
  • 举报
回复

<script language=javascript>
function strDateTime(str)
{
var reg =/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
//^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
if (newStr != str) alert("时间格式不对!");
}
</script>

上面这个的就不要再贴了,上面的一输入YYYY-MM-DD就报“格式不对”
代码转载自:https://pan.quark.cn/s/8ce4326d996e 对于在 CentOS 7 系统中修改网卡配置文件后无法使设置生效的情况,经过实践验证,可以通过使用 nmcli 命令来进行调整。完成修改之后,需要重新启动虚拟机以使更改生效,这样操作流程即告完成。如果设置仍然无法生效,则表明虚拟机在启动过程中所获取的 IP 地址配置并非针对 eth0,此时可以对其它网卡的配置文件进行修改或将其移除。在 CentOS 7 系统中,网络配置的管理机制与早期版本存在差异,主要体现为采用了 Network Manager 服务来负责网络接口的管理。在某些情形下,尽管修改了 `/etc/sysconfig/network-scripts` 目录下的 `ifcfg-eth0` 文件,但网络配置却未能即时生效。此类问题的发生通常源于 CentOS 7 采用了不同于以往的配置读取方法。接下来将具体阐述如何借助 nmcli 命令来处理这一挑战。 以 root 用户身份登录系统并打开终端界面。nmcli 是 Network Manager 提供的命令行界面工具,它支持在命令行环境下执行网络连接的建立、编辑、查询及管理任务。针对修改 eth0 网卡配置的需求,可以遵循以下步骤进行操作: 1. 导航至 `/etc/sysconfig/network-scripts` 目录: ``` cd /etc/sysconfig/network-scripts ``` 2. 检查该目录内是否存在 `ifcfg-eth0.bak` 文件,该备份文件可能是先前调整配置时遗留下来的,若存在可能造成冲突。若发现该文件,可以选择将其删除: ``` [root@localhost netw...
代码转载自:https://pan.quark.cn/s/46fd08fb879c 网管教程 从入门到精通软件篇 ★一。★详尽的xp修复控制台指令及其应用!!! 放入xp(2000)的光盘,安装时选择R,执行修复! Windows XP(涵盖 Windows 2000)的控制台指令是在系统遭遇某些意外状况时的一种极具效用的诊断、检测以及恢复系统功能的工具。笔者确实一直期望能够将这方面的指令进行归纳,此次由老范辛苦整理了这份极具价值的秘籍。 Bootcfg bootcfg 命令用于启动配置与故障恢复(对大多数计算机而言,即 boot.ini 文件)。 带有特定参数的 bootcfg 命令仅在运用故障恢复控制台时方可使用。能够在命令行界面下运用带有不同参数的 bootcfg 命令。 用法: bootcfg /default 设定默认引导选项。 bootcfg /add 向引导清单中增添 Windows 安装。 bootcfg /rebuild 重复整个 Windows 安装流程并让用户选择需添加的项目。 注意:运用 bootcfg /rebuild 之前,应先借助 bootcfg /copy 命令备份 boot.ini 文件。 bootcfg /scan 探查用于 Windows 安装的全部磁盘并展示结果。 注意:这些结果被静态存储,并用于当前会话。若在当前会话期间磁盘配置发生变动,为获取更新的探查结果,必须先重启计算机,然后再次探查磁盘。 bootcfg /list 列示引导清单中已有的项目。 bootcfg /disableredirect 在启动引导程序中禁用重定向。 bootcfg /redirect [ PortBaudRrate] |[ useBio...

28,403

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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