• 利用正则表达式检查时间的合法性


    利用正则表达式检查时间的合法性

    左直拳

    许多时候,少不得要检测一下用户输入的时间格式是否正确。对于B/S结构程序而言,既可以在服务器端检查,也可以在浏览器端检查,将错误封杀于提交之前,免得拿这些小事去烦服务器。

    我有个WEB应用程序,需要在一个datagrid里面输入时间。决定在提交前检测时间合法性。

    思路如下:

    1、                   设置一个可使用自定义的javascript函数的数据检查控件CustomValidator指向时间输入文本框txtTime

    2、                   编写一个检测时间的javascript函数CheckTime

    3、                   CustomValidator的属性ClientValidatorFunction设为CheckTime

    关键是函数CheckTime该怎么写。

    用正则表达式。

    正则表达式是个好东西,看起来相当复杂,却真的很好用(痘痘真的不再长)。比如,检测邮箱合法性,用的就是一串长长的,神秘的正则表达式。

    时间的格式形如:hh:mm。除了分隔符“:”外,只能是数字。并且小时不能>23,分钟不能>59。构造正则表达式如下:

    var pattern = /(/d|([0-1]/d)|(2[0-3])):(/d|([0-5]/d))/;

    其中,“/d”代表0~9的任意一位数字;“|”表示“或”的关系;“()”就跟平常用的括号没什么两样。用意很明显。

    可是在测试的时候发现,象9:8967:5ab01:00这样的串放上去都显示合法。原来是没有标明串的开头和结尾,比如9:89,其中9:8确实是符合表达式的,并没有错。加上开头标志符“^”和结尾标志符“$”就搞定了。修正后的正则表达式

    var pattern = /^(/d|([0-1]/d)|(2[0-3])):(/d|([0-5]/d))$/;

    完整的检测时间函数

    //检测时间的合法性

    function CheckTime(source,args)

    {

           var time = args.Value;

           var pattern = /^(/d|([0-1]/d)|(2[0-3])):(/d|([0-5]/d))$/;

           if( time != "" && !pattern.test(time) )

           {

                  args.IsValid = false;

                  return;

           }

           args.IsValid = true;

    }

  • 相关阅读:
    codeforces 132C Logo Turtle(dp)
    LCIS 最长公共上升子序列
    欧拉函数与欧拉定理
    HDU 5592 ZYB's Premutation(树状数组+二分)
    HDU 4294 Multiple(搜索+数学)
    1080 Graduate Admission (30分)(排序)
    1078 Hashing (25分)(欧拉筛素数打表 + hash平方探测)
    1074 Reversing Linked List (25分)(链表区间反转)
    1099 Build A Binary Search Tree (30分)(BST的层序或者中序遍历建树,层序便利输出树)
    1068 Find More Coins (30分)(记忆化搜索 || dp)
  • 原文地址:https://www.cnblogs.com/leftfist/p/4258364.html
Copyright © 2020-2023  润新知