一 REGEXP
(1)正则表达式
概要:就是按照某种规则去匹配符合条件的字符串
- \b 单词边界
- . 可以匹配任意字符 (所以:
'js.'
可以匹配'jsp'
、'jss'
、'js!'
等等) - 用
\d
可以匹配一个数字, \w
可以匹配一个字母或数字- 用
*
表示任意个字符(包括0个), - 用
+
表示至少一个字符, - 用
?
表示0个或1个字符, - 用
{n}
表示n个字符, - 用
{n,m}
表示n-m个字符 - { } 或者
- ^ 开头
- $ 结尾
(2)RegExp 对象
两种方法实例化RegExp对象
- 字面量
- 构造函数
1.修饰符
- g: global 全文搜索,不添加,搜索到第一个匹配停止
- i : ignore case 忽略大小写,默认大小写敏感
- m:mulitiple lines 多行搜索
2.分组
用()表示的就是要提取的分组(Group)
例:
var re = /^(\d{3})-(\d{3,8})$/;
re.exec('010-12345'); // ['010-12345', '010', '12345']
re.exec('010 12345'); // null
3.贪婪匹配
需要特别指出的是,正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符。举例如下,匹配出数字后面的0
var re = /^(\d+)(0*)$/;
re.exec('102300'); // ['102300', '102300', '']
由于\d+
采用贪婪匹配,直接把后面的0
全部匹配了,结果0*
只能匹配空字符串了。
必须让\d+
采用非贪婪匹配(也就是尽可能少匹配),才能把后面的0
匹配出来,加个?
就可以让\d+
采用非贪婪匹配:
var re = /^(\d+?)(0*)$/;
re.exec('102300'); // ['102300', '1023', '00']
4.字符类
- 使用元字符 [ ] 来构建一个简单的类
- 所谓类是指符合某些特性的对象,一个泛指,而不是特指某个字符
- 表达式[ abc ] 把字符 a 或 b 或 c 归为一类,表达式可以匹配这类的字符
例: 'a1b2c3'.replace(/ [ abc ] /g,'x')
- ^ 在中括号字符类取反
5.范围类
使用[a - z] 来连接字符表示从a到z的任意字符
单个横线代表横线
验证Email地址的正则表达式