js正则表达式
2017-03-04 11:16 老安的世界 阅读(152) 评论(0) 编辑 收藏 举报定义正则表达式
//定义 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匹配到返回数组,匹配不到返回null var res2=pattern.exec(str);//3
字符串的正则方法
/* 字符串的正则方法 match 返回匹配的数组或null replace 替换 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);//3 var 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 is document.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,'<strong>$1</strong>')); document.write(str.replace(pattern,'<strong>$2,$1</strong>'));//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] 整个字符串 abc a[1] 第一个分组,abc a[2] 第二个分组 bc a[3] 第三个分组 c