正则表达式
为什么要有正则表达式:因为查找是一个比较复杂的东西,我们需要更加准确快速的找到自己想要的。
什么是正则表达式:它可以定义一种字符串逻辑的方式,来和要查找的字符串匹配,进而找到自己想要的。
1、定义规则:
(1)使用 /规则/修饰符;
var patt = /HelloCoolDog/i;//i代表修饰符(2)新创建一个RegExp对象,给两个参数,分别为规则和修饰符
var patt1 = new RegExp("HELLO","i");
2、常用的修饰符
(1)i:不区分大小写
var str = "HelloCoolDog"; //i 不区分大小写 var patt1 = /hellocooldog/i;//i代表修饰符 (2)g:全局匹配,从找到的下一个下标开始在继续往后查找,一直到字符串结束
var str = "HelloCoolDog"; //g 执行全局查找(匹配)(查找所有匹配而非在找到第一个匹配后停止) var patt2 = /o/g; 3、字符模式
(1)[Hel]:从里面字符中任意一个去匹配字符串
var str = "HelloCoolDog"; var patt = /[Hel]/g; (2)[0-9]:匹配任意一个数字var str = "He678l1l9oCo2345olDog"; var patt1 = /[0-9]/g; var result = str.match(patt1); document.write(result);//6,7,8,1,9,2,3,4,5 (3)[a-z]:匹配所有小写字母
var str = "He678l1l9oCo2345olDog"; var patt2 = /[a-z]/g; var result = str.match(patt2); document.write(result);//e,o,o,o,l,o,g (4)[A-Z]:匹配所有大写字母 var str = "He678l1l9oCo2345olDog"; var patt3 = /[A-Z]/g; var result = str.match(patt3); document.write(result);//H,C,D (5)(a|x):匹配a或x,a也能用[]来代替 var str = "He678l1l9oCo2345olDog"; var patt4 = /([a-z]|[A-Z])/g; var result = str.match(patt4); document.write(result);//H,e,l,l,o,C,o,o,l,D,o,g 4、常用的元字符
(1)\w:单词字符 包括所有字母、数字和下划线,w是word的缩写
var str = "He678l1l9oCo2345olDog"; var patt = /\w/g;//word var result = str.match(patt); document.write(result);(2)\s:空格, s是space的缩写
var str = " He678l1l9oCo2345olDog"; var patt = /\s/g; var result = str.replace(patt,"&"); document.write(result);(3)\d:数字, 是digital的缩写
var str = "He678l1l9oCo2345olDog"; var patt = /\d/g; var result = str.match(patt); document.write(result); 5、常用的量词(1)n+:找到一个或者多个n
var str = "He678l1l9oCoo2345lDog"; var patt = /\oo+/; var result = str.match(patt); document.write(result);//oo (2)o+:匹配一个或多个oo*:匹配0个或多个o
o?:匹配0个或者1个o
var str = "He678l1l9ooooCoo2345lDog"; var patt = /\oo+/g;//匹配一个或多个 var patt1 = /\oo*/g;//匹配0个或者多个 var patt3 = /\oo?/g;//匹配0个或者1个 var result = str.match(patt); document.write(result+"<br>"); var result = str.match(patt1); document.write(result+"<br>"); var result = str.match(patt3); document.write(result);输出结果为:
(3)o{3}:指定具体的个数
o{2,3}:制定一个有范围的区间,最少2个最多3个
o{2, }:最少2个
输出结果为:
(4)^:必须以后面的内容开头
$:必须以什么内容结尾
6、RegExp常用的两种方法:
(1)Exec():返回的是找到符合正则表达式新的字符串
var patt = /\w+/; var str = "hello word"; var result = patt.exec(str);//获得正则表达式,并付给一个新的字符串 var result = str.match(patt); document.write(result);(2)Test():返回true或者false,当字符串满足正则表达式是为true否则为false
var str = prompt("请输入密码:"); var patt = /([a-z]|[A-Z])\w{5,17}/; if(patt.test(str)){ document.write("输入正确!"); }else{ document.write("输入错误!"); } var isRight = patt.test(str);//用于校验 document.write(result); 最后写一个案例来验证日期: var day = prompt("请输入日期:"); var patt = /^([0][1-9]|[1][0-2])([0][1-9]|[1][0-9]|[2][0-9]|[3][0-1])$/; if(patt.test(day)){ document.write("输入正确!"); }else{ document.write("输入错误!"); } var isRight = patt.test(day);//用于校验 document.write(result);