正则表达式(英语:Regular Expression)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
1、正则表达式的定义:
显示声明: new RegExp(“正则表达式主体”, 修饰符(可选)),例 new RegExp(“a”, g)
隐式声明:/正则表达式主体/修饰符(可选),例 /a/g
2、正则表达式的修饰符:
i:忽略大小写(ignore)将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。
m:多行匹配(multi line)使边界字符 ^ 和 $ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。
g:全局匹配(global)查找所有的匹配项。
3、正则表达式的元字符: 正则表达式中自负分为普通自负和元字符,元字符是指有特殊意义的字符
量词:
// ?:一个或零个
// +:最少一个
// *:最少零个
// {n}:n个
// {n,m}:最少n个,最多m个,n到m之间
// {n,}:最少n个
边界
// ^:匹配以什么开头
// $:以什么结尾
// \b:单词边界
// \B:非单词边界
范围
// [abc]:表示abc字符中的某一个
// [a-z]:表示a-z中的某一个,包含a,b,c…,z,例:[a-zA-Z]:所有的字母中的某个字母,[0-9]所有的数字中的某个数字
// [^a]:非字母a的任意字符
分组
// ():将正则表达式分组
或
// |逻辑或,(a|b)就是a或着b
预定义元字符
// .:通配符,表示除回车换行外的所有字符。
// \d:匹配任意一个数字字符,等价于[0-9]
// \D:匹配任意一个非数字字符,等价于[^0-9]
// \w:匹配字母数字下划线中任意一个字符,等价于[a-zA-Z0-9_]
// \W:匹配非字母数字下划线中任意一个字符,等价于[^a-zA-Z0-9_]
// \s:匹配一个空格
// \S:匹配一个非空格
3、贪婪模式与非贪婪模式
贪婪模式:/a{1,10}/,这个表达式中量词是一个范围,正则表达式会按照最大限度的去匹配字符串,这种模式就是贪婪模式;
非贪婪模式:启用非贪婪模式就是在量词之后加一个问号/a{1,10}?/,正则表达式会匹配最小限度的字符串;
4、断言
// ?=
// ?!
5、正则表达式常用的方法:
// test:正则匹配,字符串符合正则规则返回true,反之为false;例:/a/.test(“a”) // true
// exec:正则捕获,返回一个数组,第一项是与正则表达式匹配的文本,之后的项是与正则表达的分组所匹配的文本;返回的数组还有两个属性,index,匹配文本的第一个字符所在的位置,input,传输的字符串
6、字符串与正则相关的方法:
// split:字符串分割成数组
// replace:字符串替换
// search:字符串查找
// match:字符串匹配
7、常用的正则:
1、Email地址:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
2、域名:/[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?/
3、手机号码:/^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/
4、身份证号(15位、18位数字):/^\d{15}|\d{18}$/