JS中的正则对象
概述
正则表达式(regular expression)是一种表达文本模式(即字符串结构)的方法,有点像字符串的模板,常常用作按照“给定模式”匹配文本的工具。比如,正则表达式给出一个 Email 地址的模式,然后用它来确定一个字符串是否为 Email 地址。
JavaScript 的正则表达式体系是参照 Perl 5 建立的。
新建正则表达式有两种方法。一种是使用字面量,以斜杠表示开始和结束。
var regex = /xyz/;
另一种是使用 RegExp 构造函数。
var regex = new RegExp('xyz');
上面两种写法是等价的,都新建了一个内容为xyz的正则表达式对象。它们的主要区别是,第一种方法在编译时新建正则表达式,第二种方法在运行时新建正则表达式。
RegExp 构造函数还可以接受第二个参数,表示修饰符(详细解释见下文)。
var regex = new RegExp('xyz', "i");// 等价于var regex = /xyz/i;
上面代码中,正则表达式/xyz/有一个修饰符i。
这两种写法——字面量和构造函数——在运行时有一个细微的区别。采用字面量的写法,正则对象在代码载入时(即编译时)生成;采用构造函数的方法,正则对象在代码运行时生成。考虑到书写的便利和直观,实际应用中,基本上都采用字面量的写法。
正则对象生成以后,有两种使用方式:
正则对象的方法:将字符串作为参数,比如regex.test(string)
。 字符串对象的方法:将正则对象作为参数,比如string.match(regex)
。这两种使用方式下面都会介绍。
正则对象的属性和方法
属性
正则对象的属性分成两类。
一类是修饰符相关,返回一个布尔值,表示对应的修饰符是否设置。
ignoreCase:返回一个布尔值,表示是否设置了i修饰符,该属性只读。 global:返回一个布尔值,表示是否设置了g修饰符,该属性只读。 multiline:返回一个布尔值,表示是否设置了m修饰符,该属性只读。var r = /abc/igm;r.ignoreCase // truer.global // truer.multiline // true
另一类是与修饰符无关的属性,主要是下面两个。
lastIndex:返回下一次开始搜索的位置。该属性可读写,但是只在设置了g修饰符时有意义。 source:返回正则表达式的字符串形式(不包括反斜杠),该属性只读。var r = /abc/igm;r.lastIndex // 0r.source // "abc"
test()
正则对象的test方法返回一个布尔值,表示当前模式是否能匹配参数字符串。
/cat/.test('cats and dogs') // true
上面代码验证参数字符串之中是否包含cat,结果返回true。
新闻热点
疑难解答
图片精选