1、web
什么是正则表达式:官方的解释是:正则是匹配字符串特定模式的一种表达式。换句话就是正则表达式就是用来匹配字符串的。正则表达式
2、建立正则表达式的方式:数组
一、方式一:app
var box = new RegExp("no pain no gain","igm");
在方式一中的参数而是能够省略的。其中,i表示忽略大小写,默认是区分大小写的。g是表明全局匹配(后面详细说明),m表示多行匹配.三个参数能够单独使用也能够一块儿使用函数
二、方式二:测试
var box =/you are the best/igm;
3、测试正则表达式的函数:google
一、RegExp包含两个函数test()和exec()。test()返回true或false,而exec()返回匹配到的数组spa
1.一、test()code
var pattern = new RegExp("This is box","ig");//建立正则表达式忽略大小写,全局匹配 var str = "box"; alert( pattern.test(str));//返回true
1.二、exec()orm
var pattern = /This is box/ig;//建立正则表达式忽略大小写,全局匹配 var str = "box"; var a = pattern.exec(str);//返回数组
alert(a[0]);//打印出box
二、除lRegExp提供了test()和exec()两种测试正则表达式的方法String也提供了测试正则表达式的方法,match(pattern),replace(pattern,repalcement),search(pattern),split(pattern)
2.一、match(pattern)返回pattern中的子串或则null
var pattern = /This is a box,This is a cat/ig var str = "This"; var a = str.match(pattern); alert(a.length);//打印出2 alter(a[0]);//打印出This
若是将上面的的例子改为一下形式(把g去掉)
var pattern = /This is a box,This is a cat/i var str = "This"; var a = str.match(pattern); alert(a.length);//打印出1 alter(a[0]);//打印出This
var pattern = /This is a box,This is a cat/ var str = "This"; var a = str.match(pattern); alert(a.length);//打印出0 alter(a[0]);//打印出undefind
2.二、replace(pattern,str1);用str1替换
var pattern = /This is a box,This is a cat/i var str = "This"; str.replacee(pattern,"That"); alter(pattern );//输出That is a box,This is a cat
var pattern = /This is a box,This is a cat/ig
var str = "a";
var a = str.search(pattern);
alert(a);//返回8
2.四、split(pattern)//返回分割后的数组
var pattern = /a/ig var str = "This is a box,This is a cat"; var a = str.split(pattern); alert(a.length);//打印出3
4、获取控制
一、
1.一、[a-z0-9]匹配括号中字符的任意一个
1.二、. 匹配任意一个字符
1.三、[^a-z0-9]匹配不在括号中的字符的任意一个
1.四、\d匹配数字[0-9]
1.五、\D匹配非数字[^0-9]
1.六、\w匹配数字,字母及下划线
1.七、\W匹配非数字字母及下划线
1.八、\0匹配null,\b匹配空格字符,\n匹配换行,\r匹配回车,\s匹配空白字符,空格,制表符,换行符 \S匹配非空白字符
1.九、^行首匹配,$行尾匹配,
1.十、x?匹配x0次或1次,x*匹配x任意次,x+匹配x1次或屡次,(xyz)+匹配xyz一次或屡次,x{n,m}匹配xn到m次
1.十一、|herro|where|why匹配herro,where,why中的任意一个
1.十二、\1或者$1匹配第一个分组的内容 , \2或者$2匹配第二个分组的内容 ,\3或者$3匹配第三个分组的内容
二、
2.一、前瞻性捕获
var pattern = (goo(?=gle));//goo后面必须跟着gle才捕获 var str= google; alert(pattern.exec(str));
2.二、捕获性分组:指的是RegExp.$1这个属性的值
var str = "This is box ,This is apple"; var reg = /(This ){1}(p){2}/gi; reg.test(str); // 要必须匹配以后才有下面的值 alert(RegExp.$1); //output "This" alert(RegExp.$2); //output "pp"
非捕获分组模式:上面说了捕获分组,那非捕获分组其实就是不让RegExp.$1引用了
var str = "#123456789"; var reg = /#(?:\d+)/; reg.test(str); alert(RegExp.$1); //output "" 注意这里取消了反向引用就为空了