建立正则表达式
建立正则表达式和建立字符串相似,建立正则表达式提供了两种方法,一种是采用new
运算符,另外一个是采用字面量方式。正则表达式
- var box = new RegExp('box'); //第一个参数字符串
- var box = new RegExp('box', 'ig'); //第二个参数可选模式修饰符
模式修饰符的可选参数数组
- var box = /box/; //直接用两个反斜杠
- var box = /box/ig; //在第二个斜杠后面加上模式修饰符
2.测试正则表达式
RegExp 对象包含两个方法:test()和exec(),功能基本类似,用于测试字符串匹配。test()
方法在字符串中查找是否存在指定的正则表达式并返回布尔值,若是存在则返回true,不存
在则返回false。exec()方法也用于在字符串中查找指定正则表达式,若是exec()方法执行成
功,则返回包含该查找字符串的相关信息数组。若是执行失败,则返回null。浏览器
- /*使用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 a Box!')); //模式和字符串替换掉了两个变量
- /*使用exec 返回匹配数组*/
- var pattern = /box/i;
- var str = 'This is a Box!';
- alert(pattern.exec(str)); //匹配了返回数组,不然返回null
3.使用字符串的正则表达式方法
除了test()和exec()方法,String 对象也提供了4 个使用正则表达式的方法。ide
- /*使用match 方法获取获取匹配数组*/
- var pattern = /box/ig; //全局搜索
- var str = 'This is a Box!,That is a Box too';
- alert(str.match(pattern)); //匹配到两个Box,Box
- alert(str.match(pattern).length); //获取数组的长度
PS:由于search 方法查找到即返回,也就是说无需g 全局
- /*使用search 来查找匹配数据*/
- var pattern = /box/ig;
- var str = 'This is a Box!,That is a Box too';
- alert(str.search(pattern)); //查找到返回位置,不然返回-1
- /*使用replace 替换匹配到的数据*/
- 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)); //将空格拆开分组成数组
RegExp对象的静态属性测试
属性 | 短名 | 含义 |
input | $_ | 当前被匹配的字符串 |
lastMatch | $& | 最后一个匹配字符串 |
lastParen | $+ | 最后一对圆括号内的匹配子串 |
leftContext | $` | 最后一次匹配前的子串 |
multiline | $* | 用于指定是否全部的表达式都用于多行的布尔值 |
rightContext | $' | 在上次匹配以后的子串 |
PS:Opera 不支持input、lastMatch、lastParen 和multiline 属性。IE 不支持multiline 属
- /*使用静态属性*/
- var pattern = /(g)oogle/;
- var str = 'This is google!';
- pattern.test(str); //执行一下
- alert(RegExp.input); //This is google!
- alert(RegExp.leftContext); //This is
- alert(RegExp.rightContext); //!
- alert(RegExp.lastMatch); //google
- alert(RegExp.lastParen); //g
- alert(RegExp.multiline); //false
性。
全部的属性可使用短名来操做
RegExp.input 能够改写成RegExp['$_'],依次类推。但RegExp.input 比较特殊,它还可
以写成RegExp.$_。
PS:以上基本没什么用。而且lastIndex 在获取下次匹配位置上IE 和其余浏览器有误差,主要表如今非全局匹配上。lastIndex 还支持手动设置,直接赋值操做。
- /*使用实例属性*/
- var pattern = /google/ig;
- alert(pattern.global); //true,是否全局了
- alert(pattern.ignoreCase); //true,是否忽略大小写
- alert(pattern.multiline); //false,是否支持换行
- alert(pattern.lastIndex); //0,下次的匹配位置
- alert(pattern.source); //google,正则表达式的源字符串
- var pattern = /google/g;
- var str = 'google google google';
- pattern.test(str); //google,匹配第一次
- alert(pattern.lastIndex); //6,第二次匹配的位