注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天上人间*bobo之家

有阳光的时段,就有他(她)的博客文章。也许天气并非晴空万里,博主的“博物钟”却是

 
 
 

日志

 
 

正则表达式验证  

2009-08-08 23:48:41|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

说明:

元字符是正则表达式语法的一部分,有这些:

( [ { \ ^ $ | ) ? * + .

任何时候使用他们都要对它们进行转义,比如: var regStr=/\?/;

但是:如果不用上面的“字面量语法”的时候就要进行双重转义,如:var regStr="\\?";

在用JS中预定义的特殊字符时候,如:\t,\n;还有一组预定义字符类如:.,\d,\D,\w;更应该注意转义。

我在复制代码的时候选的是HTML,\\就被过滤成\了,所以会出现差异,这也是前面为什么网友们发现验证不对的地方。下面用文本粘贴:

正确的如下:

<html>

<head>

<title>正则表达式验证示例</title>

<script language="JavaScript">

<!--

function checkdata(){//检查函数

//检查是否数字

    var txt = document.forms[0].num.value;

    if(txt.search("^-?\\d+(\\.\\d+)?$")!=0){

        alert("请输入一个数字!");

        document.forms[0].num.select();

        return false;

    }

    //检查是否整数

    txt = document.forms[0].int.value;

    if(txt.search("^-?\\d+$")!=0){

        alert("请输入一个整数!");

        document.forms[0].int.select();

        return false;

    }

    //检查EMAIL是否合法

    txt = document.forms[0].email.value;

    if(txt.search("^(?:\\w+\\.?)*\\w+@(?:\\w+\\.?)*\\w+$")!=0){

        alert("请输入正确的电子邮件!");

        document.forms[0].email.select();

        return false;

    }

    alert("检查通过!");

    return true;

}

-->

</script>

</head>

<body>

<p>

<form action="" method="post" OnSubmit="return checkdata()">

<br>请输入一个数字:<input type="text" name="num">

<br>请输入一个整数:<input type="text" name="int">

<br>请输入电子邮件:<input type="text" name="email">

<br><input type="submit" value="提交">

<form>

</body>

</html>

再补充一些:常用验证:

<script language="JavaScript">

            <!-- //对付老式浏览器所用注释

           

   function testisNum(s){

    var s =document.getElementById('num').value;

    if(isNum(s))

    {

     alert("是数字");

    }

    else

    {

     alert("请出入数字");

    }

   }

  

  

            ?//校验用户姓名:只能输入3-20个以字母和数字开头的字串

            function isTrueName(s)

            {

             var pattern=/^\w{3,20}$/;

             if(pattern.exec(s))

             {

              return true;

             }

             return false;

            }

            //校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”

            function isTel(s)

            {

             var pattern =/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;

             if(pattern.exec(s))

             {

              return true;

             }

             return false;

            }

            //校验手机号码:必须以数字开头,除数字外,可含有“-”

            function isMobile(s)

            {

             //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;

             var patrn=/^((\(\d{0,3}\))|(\d{0,3}\-))?13|15\d{9}$/;

             if (!patrn.exec(s)){

               return false;

               }

              return true;

            }

            //校验(国内)邮政编码

            function isPostalCode(s)

            {

             var patrn=/^[0-9]{6}$/;

             //var patrn=/^[a-zA-Z0-9 ]{3,12}$/;

              if (!patrn.exec(s)){

               return false;

               }

              return true;

            }

           

            function isIP(s) //by zergling

            {

             var patrn=/^[0-9.]{1,20}$/;

              if (!patrn.exec(s)) {

               return false;

               }

              return true;

            }

            //校验邮箱

            function isEmail(s)

            {

             var patrn=/^[a-zA-Z0-9_\-]{1,}@[a-zA-Z0-9_\-]{1,}\.[a-zA-Z0-9_\-.]{1,}$/;

              if (!patrn.exec(s)) {

               return false;

               }

              return true;

            }

            //校验日期

            function isdate(s)

            {

             var patrn=/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$/;

              if (!patrn.exec(s)){

               return false;

               }

              return true;

            }

            

            //校验货币格式

            function isCurrency(s)

            {

             var patrn=/^\d+(\.\d+)?$/;

              if (!patrn.exec(s)) {

               return false;

               }

              return true;

            }

            //校验搜索关键字

            function isSearch(s)

            {

             var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;\'\,.<>?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;\'\,.<>?]{0,19}$/;

              if (!patrn.exec(s)) {

              return false;

               }

              return true;

            }

            //检查是否数字

            function isNum(s)

            {

             var pattern = /^\d+(\.\d+)?$/;

             if(pattern.test(s))

             {

              return true;

             }

             return false;

            }

             //检查是否整数

            function isInt(s)

            {

             var pattern = /^-?\d+$/;

             if(s.search(pattern)!=0)

             {

              return false;

             }

             return true;

            }

            -->

        </script>

下面是以前错误的复制:

<html>

<head>

<title>正则表达式验证示例</title>

<script language="JavaScript">...

<!--

function checkdata() ...{//检查函数

//检查是否数字

    var txt = document.forms[0].num.value;

    if(txt.search("^\d+(\.\d+)?$")!=0) ...{

        alert("请输入一个数字!");

        document.forms[0].num.select();

        return false;

    }

    //检查是否整数

    txt = document.forms[0].int.value;

    if(txt.search("^-?\d+$")!=0) ...{

        alert("请输入一个整数!");

        document.forms[0].int.select();

        return false;

    }

    //检查EMAIL是否合法

    txt = document.forms[0].email.value;

    if(txt.search("^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$")!=0) ...{

        alert("请输入正确的电子邮件!");

        document.forms[0].email.select();

        return false;

    }

    alert("检查通过!");

    return true;

}

-->

</script>

</head>

<body>

<p>

<form action="" method="post" OnSubmit="return checkdata()">

<br>请输入一个数字:<input type="text" name="num">

<br>请输入一个整数:<input type="text" name="int">

<br>请输入电子邮件:<input type="text" name="email">

<br><input type="submit" value="提交">

<form>

</body>

</html>

已经更正为:

^\d+(\.\d+)?$

  评论这张
 
阅读(83)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018