【www.gdgbn.com--正则表达式】

javascript正则表达式的基本知识

1     javascript 正则对象创建 和用法

    声明javascript 正则表达式
   
     var reCat = new RegExp("cat");
      你也可以
     var reCat = /cat/;      //Perl 风格   (推荐)

2 学习最常用的 test exec match search  replace  split 6个方法

   1) test  检查指定的字符串是否存在

       var data = "123123";
       var reCat = /123/gi;
       alert(reCat.test(data));  //true
    
       //检查字符是否存在  g 继续往下走  i 不区分大小写

   2) exec 返回查询值

       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
       var reCat = /cat/i;
       alert(reCat.exec(data));  //Cat

     3)match  得到查询数组

       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
       var reCat = /cat/gi;
       var arrMactches = data.match(reCat)

       for (var i=0;i < arrMactches.length ; i++)
       {
            alert(arrMactches[i]);   //Cat  cat
       }

     4) search  返回搜索位置  类似于indexof

       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
       var reCat = /cat/gi;
       alert(data.search(reCat));  //23


    5) replace  替换字符  利用正则替换

       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
       var reCat = /cat/gi;
       alert(data.replace(reCat,"libinqq"));

    6)split   利用正则分割数组

       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
       var reCat = /,/;
       var arrdata = data.split(reCat);

       for (var i = 0; i < arrdata.length; i++)
       {
            alert(arrdata[i]);
       }

3  学习下  简单类   负向类  范围类  组合类

    //简单类
       var data = "1libinqq,2libinqq,3libinqq,4libinqq";
       var reCat = /[123]libinqq/gi;
       var arrdata = data.match(reCat);

       for (var i = 0; i < arrdata.length; i++)
       {
            alert(arrdata[i]);  // 1libinqq 2libinqq  3libinqq
       }

       //负向类
       var data = "alibinqq,1libinqq,2libinqq,3libinqq,4libinqq";  //u0062cf
       var reCat = /[^a123]libinqq/gi;
       var arrdata = data.match(reCat);

       for (var i = 0; i < arrdata.length; i++)
       {
            alert(arrdata[i]);  //4libinqq
       }

       //范围类
       var data = "libinqq1,libinqq2,libinqq3,libinqq4,libinqq5";  //u0062cf
       var reCat = /libinqq[2-3]/gi;
       var arrdata = data.match(reCat);

       for (var i = 0; i < arrdata.length; i++)
       {
            alert(arrdata[i]);   // libinqq2  libinqq3
       }

       //组合类
      var data = "a,b,c,w,1,2,3,5";  //u0062cf
       var reCat = /[a-q1-4n]/gi;
       var arrdata = data.match(reCat);

       for (var i = 0; i < arrdata.length; i++)
       {
            alert(arrdata[i]);  // a b c 1 2 3
       }


javascript验证表单时常用

"^-[0-9]*[1-9][0-9]*$"  //负整数

"^-?d+$"    //整数

"^d+(.d+)?$"  //非负浮点数(正浮点数 + 0)

"^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数

"^((-d+(.d+)?)|(0+(.0+)?))$"  //非正浮点数(负浮点数 + 0)

"^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数

"^(-?d+)(.d+)?$"  //浮点数

"^[A-Za-z]+$"  //由26个英文字母组成的字符串

"^[A-Z]+$"  //由26个英文字母的大写组成的字符串

"^[a-z]+$"  //由26个英文字母的小写组成的字符串

"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串

"^w+$"  //由数字、26个英文字母或者下划线组成的字符串

"^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$"    //email地址

"^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$"  //url


function isTrueName(s)  
{  
var patrn=/^[a-zA-Z]{1,30}$/;  
if (!patrn.exec(s)) return false 
return true 
}  
}}  
 
//校验密码:只能输入6-20个字母、数字、下划线  

function isPasswd(s)   
{  
var patrn=/^(w){6,20}$/;  
if (!patrn.exec(s)) return false 
return true 
}  
  

  

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

function isTel(s)   
{  
//var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?(d){1,12})+$/;  
var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$/;  
if (!patrn.exec(s)) return false 
return true 
}  
  

  

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

function isMobil(s)   
{  
var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$/;  
if (!patrn.exec(s)) return false 
return true 
}  
  

  

//校验邮政编码  

function isPostalCode(s)   
{  
//var patrn=/^[a-zA-Z0-9]{3,12}$/;  
var patrn=/^[a-zA-Z0-9 ]{3,12}$/;  
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 isIP(s) //by zergling  
{  
var patrn=/^[0-9.]{1,20}$/;  
if (!patrn.exec(s)) return false 
return true 
}  
  

  

正则表达式  

"^\d+$"  //非负整数(正整数 + 0)   
"^[0-9]*[1-9][0-9]*$"  //正整数   
"^((-\d+)|(0+))$"  //非正整数(负整数 + 0)   
"^-[0-9]*[1-9][0-9]*$"  //负整数   
"^-?\d+$"    //整数   
"^\d+(\.\d+)?$"  //非负浮点数(正浮点数 + 0)   
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"   
//正浮点数   
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"  //非正浮点数(负浮点数 + 0)   
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"   
//负浮点数   
"^(-?\d+)(\.\d+)?$"  //浮点数   
"^[A-Za-z]+$"  //由26个英文字母组成的字符串   
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串   
"^[a-z]+$"  //由26个英文字母的小写组成的字符串   
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串   
"^\w+$"  //由数字、26个英文字母或者下划线组成的字符串   
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址   
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"  //url  
"^[A-Za-z0-9_]*$" 
  

本文来源:http://www.gdgbn.com/aspjiaocheng/21743/