定义正则表达式
//定义var pattern=new RegExp('box','gi');var pattern=/[0-9]/gi;
字符串测试方法
test:匹配结果返回true,false
exec:匹配结果放回匹配的字符串
var pattern=/[0-9]/gi;str="there are 34 box";var res1=pattern.test(str);//true //exec匹配到返回数组,匹配不到返回nullvar res2=pattern.exec(str);//3
字符串的正则方法
/*字符串的正则方法match 返回匹配的数组或nullreplace 替换serach 返回开始的位置split 拆分字符串为数组*/var pattern=/box/gi;str="is box 1 - Box 2";//var res=str.match(pattern);//box,Box//var res=str.replace(pattern,'desk');//desk 1 - desk 2//var res=str.search(pattern);//3var res=str.split(pattern);//以box作为拆分原则,返回is , 1 - , 2
正则表达式的静态属性
/*静态属性,用处不大*/var pattern=new RegExp('baidu');var str="this is baidu !!!";pattern.test(str);//必须执行一次,静态属性才有效document.write(RegExp.input);//this is baidu !!!document.write(RegExp.leftContext);//前子串 this isdocument.write(RegExp.rightContext);//后子串 !!!
获取控制
/*获取控制*/var pattern=/^baidu[0-9]$/gi;var str="baidu8";/*[0-9] \d[^0-9] \D\w //字母数组及下划线\W //非字母数字及下划线+ 1个或多个? 0个或1个* 任意个{m,n} 最少m个,最多n个{m,} m个或以上{m} 只能m个 [a-z]{3}^ 行首匹配$ 行尾匹配 /^baidu$/完全匹配str="baidu"*/
/*获取控制*/var pattern=/8(.*)8/gi;var str="8 is baidu8";/*\s 空格\b 是否到达边界| 或// /baidu|google|bing/RegExp.$1 获取第一个分组的内容*///分组匹配pattern.test(str);alert(RegExp.$1); //is baidu
分组内容的替换
/*获取控制*/var pattern=/(.*)\s(.*)/gi;var str="baidu google";document.write(str.replace(pattern,'$1'));document.write(str.replace(pattern,'$2,$1'));//google,baidu
//捕获性分组,所有分组都捕获var pattern=/(d+)([a-z])/gi;//非捕获分组(不捕获第二个分组) ?:var pattern=/(d+)(?:[a-z])/gi;//前瞻性捕获(goo后面必须为gle) ?=var pattern=/goo(?=gle)/gi;var str="google";//嵌套分组var str="abc";var str=/(a?(b?(c?)))/;a[0] 整个字符串 abca[1] 第一个分组,abca[2] 第二个分组 bca[3] 第三个分组 c