首页 > js学习 > js基础知识 > javascript中正则表达式的创建和常用方法
2016
12-16

javascript中正则表达式的创建和常用方法

一、创建正则表达式

创建正则表达式和创建字符串类似,创建正则表达式提供了两种方法,一种是采用new运算符,另一个是采用字面量方式。

模式修饰符:i:忽略大小写、g:全局匹配、m:多行匹配

1、用new运算符

var box = new RegExp('box'); //第一个参数字符串

var box = new RegExp('box', 'ig'); //第二个参数可选模式修饰符

2、用字面量

var box = /box/; //直接用两个反斜杠

var box = /box/ig; //在第二个斜杠后面加上模式修饰符

二、测试正则表达式

RegExp对象包含两个方法:test()和exec(),功能基本相似,用于测试字符串匹配。

test()方法在字符串中查找是否存在指定的正则表达式并返回布尔值,如果存在则返回true,不存在则返回false。

exec()方法也用于在字符串中查找指定正则表达式,如果存在则返回包含该查找字符串的相关信息数组,不存在则返回null。

三、使用字符串的正则表达式方法:除了test()和exec()方法,String对象也提供了4个使用正则表达式的方法。

match(pattern):返回pattern匹配到的子串或null

replace(pattern, replacement):用replacement替换pattern匹配的内容

search(pattern):返回字符串中第一个pattern匹配开始位置,没有匹配返回-1,因为search方法查找到即返回,也就是说无需g全局

split(pattern):返回字符串按指定pattern拆分的数组

四、RegExp对象的静态属性

input:短名'$_':当前被匹配的字符串

lastMatch:短名'$&':最后一个匹配字符串

lastParen:短名'$+':最后一对圆括号内的匹配子串

leftContext:短名'$`':最后一次匹配前的子串

multiline:短名'$* 用于指定是否所有的表达式都用于多行的布尔值

rightContext:短名'$'':在上次匹配之后的子串

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

Opera不支持input、lastMatch、lastParen和multiline属性。IE不支持multiline属性。

所有的属性可以使用短名来操作:RegExp.input可以改写成RegExp['$_'],依次类推。但RegExp.input比较特殊,它还可以写成RegExp.$_。

五、RegExp对象的实例属性

global:Boolean值,表示g是否已设置

ignoreCase:Boolean值,表示i是否已设置

lastIndex:整数,代表下次匹配将从哪里字符位置开始

multiline:Boolean值,表示m是否已设置

Source:正则表达式的源字符串形式

var pattern = /google/ig;

alert(pattern.global); //true,是否全局了

alert(pattern.ignoreCase);//true,是否忽略大小写

alert(pattern.multiline);//false,是否支持换行

alert(pattern.lastIndex);//0,前面没有运行过test()或exec()所以返回0

alert(pattern.source); //google,正则表达式的源字符串

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。