3.4.2 RegExp
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。
比如:开发中经常需要判断手机号或者邮箱等字符串是否合法。最简单的方法就是用正则表达式进行判断。
正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则该字符串就是不合法的。
在正则表达式中,如果直接给出字符,就是精确匹配。用\d
可以匹配一个数字,\w
可以匹配一个字母或数字,所以:
- '00\d'可以匹配'007',但无法匹配'00A';
- '\d\d\d'可以匹配'010';
- '\w\w'可以匹配'js';
还有很多匹配规则,本书就不一一列举了,大家可以查阅文档。 http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
有了准备知识,我们就可以在JavaScript中使用正则表达式了。
JavaScript有两种方式创建一个正则表达式:
- 第一种方式是直接通过
/正则表达式/
写出来 - 第二种方式是通过
new RegExp('正则表达式')
创建一个RegExp
对象。
两种写法是一样的:
var re1 = /ABC\-001/;
var re2 = new RegExp('ABC\\-001');
re1; // /ABC\-001/
re2; // /ABC\-001/
注意,如果使用第二种写法,因为字符串的转义问题,字符串的两个\\
实际上是一个\
。
RegExp
对象的test()
方法用于测试给定的字符串是否符合条件,下面是判断正则表达式是否匹配:
var re = /^\d{3}\-\d{3,8}$/;
re.test('010-12345'); // true
re.test('010-1234x'); // false
re.test('010 12345'); // false