正则表达式:缩写为RegExp。是一种对文本字符串进行验证、格式化的非常强大的工具。使用正则表达式可以轻松的识别和操纵文本,从而节省大量的编程时间。例如:验证用户的输入的电话号码、身份证号、电子邮件、QQ号码等是否符合正确格式。
正则表达式的语法:
var reg = /pattern/flags
patten(模式)部分任何简单或复杂的正则表达式。包含字符、限定符、分组、查找及反向引用等。
flags(标识)每个正则都有一个或多个flags
g 全局模式,即不会在发现第一个匹配项是停止
i 不区分大小写模式
m 多模式,即在达到一行文本末尾时,还会继续查找一下是否存在匹配的项。
一、元字符
字符 匹配
\ 在字面意义和特殊义之间切换
· 除了换行符外的任何字符
^ 脱字符,字符串的开头
$ 字符串的结尾
* 匹配前一项零次或多次,等价于{0,}
+ 匹配前一项一次或多次,等价于{1,}
? 匹配前一项零次或一次,等价于{0,1}
\s 任何一个空白符(\f\n\r\t\v)
\S 非空白字符
\f 换页符
\n 换行符
\r 回车符
\t 制表符
\d 0~9任意数字,相当于[0-9]
\D 任何非数字
\w 任何字母、数字及下划线
\W 除数字、字母及下划线外的其他字符
{n} 前面的字符正好出现n次,n代表数字
{n,} 前面的字符至少出现n次
{n,m} 前面的字符出现n~m次
[abcd] 与[]中任何字符匹配的字符串
[^abcd] 与[]中任何字符都不匹配的字符集
[a-z] 与[]中的字符串范围匹配的字符集
() 一个组,即括号中的作为一个整体
x|y x或者y。优先匹配左边,左边能匹配上,右边就不匹配
二、正则表达式的方法
1、test()返回布尔类型,如果有匹配项返回true,没有返回false
2、exec()查找并返回匹配结果,并以数组的形式返回。数字的第一项即为匹配的结果。没有匹配结果返回null。
exec()受到flags参数g 的影响。如果指定了g,则下次调用exec()时,会从上匹配的lastindex开始查找
三、在string对象的方法中使用正则
1、search()
参数传递一个正则表达式,返回结果是第一个与正则匹配的字串的起始位置。如果找不到匹配的的字串,返回-1
search()方法不如全局检索,会忽略正则表达式中的flags符号g
2、replace()
用来执行检索和替换,第一个参数是正则表达式,第二个参数是要替换的字符串。支持全局检索,如果正则表达式加"g",则会替换所有匹配的字串,否则只替换第一个。
3、split()
将字符串按照指定的分隔符分割成数组,参数可以是一个正则表达式。正则能够匹配的字符串都可以作为分隔符
4、match()
是字符串执行匹配正则表达式规则的方法。参数为正则表达式。返回结果是一个数组,内容为所有匹配
四、正则表达式的量词
n+:匹配任何包含至少一个n的字符串
n*:匹配之前紧邻的元素,不管该元素是否出现,都匹配成功。
n?:匹配其之前紧邻的元素,不管该元素是否出现,都匹配成功。
n{X}:匹配包含X个n的系列的字符串
n{X,Y}:匹配包含X到Y个n的序列的字符串
n{X,}:匹配包含至少X个n的序列的字符串
n$:匹配任何结尾为n的字符串
^n:匹配任何开头为n 的字符串
?=n:匹配任何其后紧接指定字符串n的字符串
?!n:匹配任何其后没有紧接指定字符串n的字符串
|:匹配左边或者右边,表示或者的意思
\:转义符