正则表达式
为什么要有这个正则表达式?
因为查找是一个比较复杂的东西,但是可以让我们更加准确快速找到自己想要的。
什么是正则表达式?
它可以定义一种字符串逻辑的公式,来和要查找的字符串做匹配,找到自己想要的。
定义规则:1.使用/规则/修饰符 修饰符可以省略
var patt = /hellocooldog/i;
2.新创建一个RegExp对象,给两个参数分别为规则和修饰符,修饰符可以省略
var patt = new RegExp("HELLO","i");
常用的修饰符:
i:不区分大小写
var str = "HelloCoolDog"; //i 不区分大小写 var patt1 = /hellocooldog/i; var result = str.search(patt1); document.write(result);
g:全局匹配,从找到的下一个下标开始在继续往后查找,一直到字符串结束
验证时不加g,查找时加g
var str = "HelloCoolDog"; var patt = /hellocooldog/i; //全局查找 var patt2 = /o/g; var result = str.replace(patt2,"0"); document.write(result);
字符模式:
[Hel]:从里面的字符串中任意一个去匹配字符串
var str = "HelloCoolDog"; var patt = /[Hel]/g; //匹配字符模式 var result = str.match(patt); document.write(result);
[0-9]:匹配任意一个数字
var str = "H1e2l3l4oC5o6ol7D8o9g"; var patt1 = /[0-9]/g;//找到所有的数字 var result = str.match(patt1); document.write(result);
[a-z]:匹配所有小写字母
var str = "H1e2l3l4oC5o6ol7D8o9g"; var patt1 = /[a-z]/g;//找到所有小写字母 var result = str.match(patt1); document.write(result);
[A-Z]:匹配所有大写字母
var str = "H1e2l3l4oC5o6ol7D8o9g"; var patt1 = /[A-Z]/g;//找到所有大写字母 var result = str.match(patt1); document.write(result);
(a|x):匹配a或者x,a也能用[ ]来找
var str = "H1e2l3l4oC5o6ol7D8o9g";
var patt1 = /([a-z]|[A-Z])/g;
var result = str.match(patt1); document.write(result);
常用的元字符:
\w:单词字符 包括所有字母和数字和下划线
var str = "H1e2l3l4oC5o6ol7D8o9g"; //使用全局查找g var patt = /\w/g;//word var result = str.match(patt); document.write(result);
\s:空格 s是space的缩写
var str = " H1e2l3l4oC5o6ol7D8o9g"; var patt = /\s/g;//space var result = str.replace(patt,"&"); document.write(result);
\d:数字
var str = " H1e2l3l4oC5o6ol7D8o9g"; var patt = /\d/g;//digital的缩写,代表数字 var result = str.replace(patt,"&"); document.write(result);//所有数字都变为&
常用的量词:
o+:找到一个或者多个o
0*:找到0个或者多个o
0?:找到0个或者一个o
var str = "H1e2l3l4o0C5o6oool7D8o9g"; var patt1 = /oo+/g;//匹配一个或者多个o var patt2 = /oo*/g;//匹配0个或者多个o var patt3 = /oo?/g;//匹配0个或者1个o var result1 = str.match(patt1); document.write(result1 + "</br>"); var result2 = str.match(patt2); document.write(result2 + "</br>"); var result3 = str.match(patt3); document.write(result3 + "</br>");
o{2}:指定具体的个数只有2个
o{2,3}:指定一个有范围的区间,最少2个最多3个
o{2,}:指定一个有范围的区间,最少2个
var str = "H1e2l3l4o0C5o6ooool7D8o9g"; var patt = /o{2}/g;//指定了o的个数 var patt1 = /o{2,3}/g;//指定至少2个最多3个的o的显示个数 var patt2 = /o{2,}/g;//指定至少2个的o的显示个数 var result = str.match(patt); document.write(result + "</br>"); var result1 = str.match(patt1); document.write(result1 + "</br>"); var result2 = str.match(patt2); document.write(result2 + "</br>");
^:匹配的是字符的开头,在多行检索中,匹配的是一行的开头
$:匹配的是字符的结尾,在多行检索中,匹配的是一行的结尾
RegExp:常用的两种方法:
1.exec():返回的是符合正则表达式新的字符串
var patt = /\w+/; var str = "good afternoon"; var result = patt.exec(str);
document.write(result);//good
2.test():返回的是true或者false。当字符串满足正则表达式时为true,否则为false
var str = prompt("请输入密码:"); var patt = /^([a-z]|[A-Z]\w{5,17}$)/; if(patt.test(str)){ alert("您输入的密码正确");//true }else{ alert("您输入的密码不规范");//false }