JS正则表达式详解
1 Javascript 正则对象创建 和用法
声明javascript 正则表达式
var reCat = new RegExp(”cat”);
你也可以
var reCat = /cat/; //Perl 风格 (推荐)
2 学习最常用的 test exec match search replace split 6个方法
//test 检查指定的字符串是否存在 var data = “123123″; var reCat = /123/gi; alert(reCat.test(data)); //true //exec 返回查询值 var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”; var reCat = /cat/i; alert(reCat.exec(data)); //Cat //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 } //search 返回搜索位置 类似于indexof var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”; var reCat = /cat/gi; alert(data.search(reCat)); //23 //replace 替换字符 利用正则替换 var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”; var reCat = /cat/gi; alert(data.replace(reCat,”libinQQ”)); //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-4\n]/gi; var arrdata = data.match(reCat); for (var i = 0; i < arrdata.length; i++) { alert(arrdata[i]); // a b c 1 2 3 }
下面是一些常用的JS正则表达式:
//校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串 function isRegisterUserName(s) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/; if (!patrn.exec(s)) return false return true } //校验用户姓名:只能输入1-30个以字母开头的字串 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_]*$"