正则表达式主要用来对用户输入的信息进行合法性验证,以节约服务器端的系统资源,提供更好的用户体验。
一、什么是正则表达式
正则表达式是一个描述字符模式的对象,用RegExp表示。String和RegExp都定义了利用正则表达式进行模式匹配和文本检索和替换的函数。
二、正则表达式基础
1、创建正则表达式
1) 采用new运算符
var box = new RegExp('Box'); //第一个参数是模式字符串
alert(box); // /Box/,两个反斜杠是正则表达式的字面量表示法
var box = new RegExp('Box' , 'igm'); //第二个参数是模式修饰符
alert(box); // /Box/igm,i表示忽略大小写,g表示全局匹配,m多行匹配
2) 使用字面量
var box = /Box/;
var box = /Box/ig;
2、测试正则表达式
RegExp对象包含两个方法:test()和exec()。test()方法用于在字符串中测试模式匹配,返回true或false;exec()在字符串中执行匹配搜索,返回结果数组。
//使用new运算符的test方法测试
var pattern = new RegExp('Box'); //模式
var str = 'box'; //字符串
alert(pattern.test(str)); //false,大小写不一致,若加上i修饰符,则返回true
//使用字面量的test()测试
alert(/Box/i.test('box')); //true
var pattern = /Box/i; //不区分大小写匹配
var str = 'This is a box!'; //一句话
alert(pattern.test(str)); // true;
综上,test()方法用于测试字符串中是否含有与正则表达式的模式相匹配的内容。
//exec()方法测试,返回匹配数组
var pattern = /Box/i;
var str = 'This is a box!';
alert(pattern.exec(str)); //返回的数组,有就返回数组的值,没有返回null
exec()还有具体的应用,后续再讲。
3、使用字符串的正则表达式方法
String()中的正则表达式方法如下表:
方法 | 含义 |
---|---|
match(pattern) | 返回pattern中的子串或null |
replace(pattern, replacement) | 用replacement替换pattern |
search(pattern) | 返回字符串中pattern开始的位置 |
split(pattern) | 返回字符串按指定pattern拆分的数组 |
//使用match()方法获取匹配数组
var pattern = /Box/ig;
var str = 'This is a box! That is a box!';
alert(str.match(pattern)); //box,box;
在上述例子中,由于开启了全局匹配,所以将所有的匹配结果组合成数组返回,如果没有g修饰符,则匹配到第一个字符串返回。
//使用search()查找匹配数据
var pattern = /Box/i;
var str = 'This is a box! That is a box!';
alert(str.search(pattern)); //10,返回第一个匹配的位置,若没有,返回-1
由于search()方法查找到即返回,所以不需要g修饰符
//使用replace()替换查找到的数据
var pattern = /Box/i;
var str = 'This is a box! That is a box!';
alert(str.replace(pattern, 'tom')); //This is a tom! That is a box!
由于没有开启全局,只替换了第一个匹配的box,加上g才能替换所有的box。
//使用splite()拆分成字符串数组
var pattern = /!/ig;
var str = 'This is a box! That is a box!';
alert(str.splite(pattern)); //This is a tom, That is a box,
alert(str.splite(pattern).length); //3, 后面还有一个空数组
网友评论