正则表达式(1)

正则表达式主要用来对用户输入的信息进行合法性验证,以节约服务器端的系统资源,提供更好的用户体验。

一、什么是正则表达式

正则表达式是一个描述字符模式的对象,用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, 后面还有一个空数组

你可能感兴趣的:(正则表达式(1))