版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/foupwang/article/details/85957873
JavaScript中正则表达式的功能由RegExp对象提供。
1 概述
正则表达式(Regular expression)是一种表达文本模式(即字符串结构)的方法,有点像是字符串的模板,常用来按照“指定模式”匹配文本。例如,可以用正则表达式定义好一个邮箱地址的模式,然后用它来检查某个字符串是否为有效的邮箱地址。
新建正则表达式有两种方法。一种是使用字面量,以斜杠表示开始和结束。
var reg = /xyz/;
另一种是使用RegExp构造函数。
var reg = new RegExp('xyz');
上面两种写法等价。区别在于,第一种方法在编译代码时,就会新建正则表达式,而第二种方法在运行时新建,所以前者的效果较高。另外,前者比较方便直观,所以实际应用中,基本采用第一种方法定义正则表达式。
2 实例方法
2.1 RegExp.prototype.test()
test方法返回一个布尔值,表示当前模式是否能匹配参数字符串。
/cat/.test('cats and dogs') // true
上面代码验证参数字符串是否包含cat,结果为true。
2.2 RegExp.prototype.exec()
exec方法返回匹配结果。如果匹配,返回一个数组,数组成员是匹配成功的子字符串,如果不匹配,就返回null。
var s = '_x_x';
var r1 = /x/;
var r2 = /y/;
r1.exec(s) // ["x"]
r2.exec(s) // null
上面代码中,正则对象r1匹配成功,所以返回一个数组,成员是匹配结果;正则对象r2匹配失败,所以返回null。
3 匹配实例
正则表达式的规则比较复杂,下面以几个实例来介绍。
3.1 检查手机号码
有效手机号码的验证规则是以1开头的11位数字,编写正则表达式如下:
function checkMobile(s) {
var reg = /^1\d{10}$/;
return reg.test(s);
}
checkMobile('13800132967') // true
checkMobile('123412341234') // false
上面的正则表达式reg中,各个特殊字符的含义如下。
- ^ 表示字符串的开始位置
- $ 表示字符串的结果位置
- \d 匹配0-9之间的任一数字,相当于[0-9]
- {10} 表示模式精确匹配10次
最终连起来,/^1\d{10}$/.test(s)的意思,就是参数s是否以1开头,并且之后的10位数字都是0-9,如果是返回true,不是返回false。
注:本文适用于ES5规范,原始内容来自 JavaScript 教程,有修改。