首页 > javascript学习 > JavaScript > 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,只替换第一个匹配的字符串,如果需要全部替换需要使用正则的g修饰符

返回一个新字符串,不会改变原字符串
'aabbcc'.replace('b', '_')    // 'aa_bcc'
'aabbcc'.replace(/b/g, '_')   // 'aa__cc'

replaceAll(pattern, replacement):可以一次性替换所有匹配。

返回一个新字符串,不会改变原字符串
'aabbcc'.replaceALL('b', '_')    // 'aa__cc'
pattern如果是正则必须添加g修饰符,否则报错

第二个参数replacement是一个字符串,表示替换的文本,其中可以使用一些特殊字符串。
$&:匹配的子字符串。
$`:匹配结果前面的文本
$':匹配结果后面的文本
$n:匹配成功的第n组内容,n是从1开始的自然数。这个参数生效的前提是,第一个参数必须是正则表达式。
$$:指代美元符号$。

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
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。