文章目录
一、创建正则表达式
var box=new RegExp(‘box’); //第一个参:正则表达式的主体-字符串
var box=new RegExp(‘box’, ‘ig’); //第二个参数:修饰符
var box=RegExp(‘box’, ‘ig’); //直接省略new也可以
var box=/box/; //直接用两个反斜杠
var box=/box/ig; //在第二个斜杠后面加上模式修饰符
二、正则表达式对象的方法
2.1 test方法
/*使用 new 运算符的 test 方法示例*/
var pattern= new RegExp('box', 'i'); //创建正则模式,不区分大小写
var str ='This is a Box!'; //创建要比对的字符串
alert(pattern.test(str)); //通过 test()方法验证是否匹配
/*使用字面量方式的 test 方法示例*/
var pattern= /box/i; //创建正则模式,不区分大小写
var str ='This is a Box!';
alert(pattern.test(str));
/*使用一条语句实现正则匹配*/
alert(/box/i.test('This is aBox!')); //模式和字符串替换掉了两个变量
2.2 exec方法
/*使用 exec 返回匹配数组,返回匹配到的串,匹配成功,返回一个装有字符串的数组,匹配失败,返回null*/
var pattern= /box/i;
var str ='This is a Box!';
alert(pattern.exec(str)); //匹配了返回数组,否则返回 null
三、字符串中使用正则表达式
除了 test()和 exec()方法,String 对象也提供了 4 个使用正则表达式的方法
字符串的函数:
match()
格式:字符串.match(正则)
功能:在字符串匹配是否有符合正则表达式,
返回值:匹配成功,返回装有匹配到子串的数组
匹配失败,返回null
replace()
格式:字符串.replace(oldStr/正则, newStr);
功能:用newStr将oldStr替换,
返回值:替换成功的新字符串。
split()
格式:字符串.split(分割符/正则);
功能:用分割符将原字符串进行分割
返回值:分割剩下的子串组成的数组。
search()
格式:字符串.search(子串/正则)
功能:找到符合条件的子串第一次出现的位置
返回值:
如果找到,返回>=0的下标
否则,返回-1
/*使用 match 方法获取获取匹配数组*/
var pattern= /box/ig; //全局搜索,不加i,匹配一个box就会结束
var str ='This is a Box!,That is a Box too';
alert(str.match(pattern)); //匹配到两个 Box,Box alert(str.match(pattern).length); //获取数组的长度
/*使用 search 来查找匹配数据*/
var pattern= /box/ig;
var str ='This is a Box!,That is a Box too';
alert(str.search(pattern)); //查找到返回位置,否则返回-1
//PS:因为 search 方法查找到即返回,也就是说无需 g 全局。
/*使用 replace 替换匹配到的数据,返回一个新的str*/
var pattern= /box/ig;
var str ='This is a Box!,That is a Box too';
alert(str.replace(pattern,'Tom')); //将 Box 替换成了 Tom
/*使用 split 拆分成字符串数组*/
var pattern= //ig;
var str ='This is a Box!,That is a Box too';
alert(str.split(pattern)); //将空格拆开分组成数组
四、元字符(编写正则表达式)
正则表达式元字符是包含特殊含义的字符。它们有一些特殊功能,可以控制匹配模式的方式。单个字符: 只能匹配一个位置的字符
元字符:在正则表达式中有特殊含义的字符。
单个数字和字符的元字符
. 匹配单个的任意字符
[范围] 匹配单个范围内的字符
[0-9] 匹配单个范围内的数字
[a-zA-Z0-9_] 匹配单个的数字、字母下划线
[^范围] 匹配任意一个除括号范围内的字符
[^0-9] 匹配任意一个非数字字符
\w 匹配单个的数字、字母下划线 等价于 [a-zA-Z0-9_]
\W 匹配单个非数字、字母下划线
\d 匹配单个数字 等价于 [0-9]
\D 匹配单个非数字 等价于 [^0-9]
空白字符
\s 匹配任意单个的空白字符
\S 匹配任意单个非空白字符
重复字符 x(任意的单个字符)
x? 匹配0个或者1个x
x+ 匹配至少一个x字符
x* 匹配任意个x字符
x{m,n}匹配至少m个,最多n个x字符,包括n
x{n} 必须匹配n个x字符
(xyz)+ 小括号括起来的部分是当做单个字符处理
锚字符
^ 行首匹配 必须以这个正则开头
$ 行尾匹配 必须以这个正则结尾