正则
正则表达式
1.最简单的正则表达式
关键字原文本身/原文/ig
i:忽略大小写
g:global全局
2.备选字符集
【一个备选字符集】规定了【一位字符】可用的备选字符列表/[备选字符集]/
注意:
-
一个[]只能匹配一位字符
-
正则默认只要满足后,就不再管理后续操作,用户可任意输入
- 解决:/^[备选字符集]$/ 要求从头到尾完全匹配
-
若备选字符集中,unicode号连续,中间部分可用-代替
//例
[0123456789] => [0-9]
一位字母 [a-zA-Z]
一位汉字 [\u4e00-\u9fa5]
一位数字、字母、下划线 [0-9a-zA-Z_]
-
除了x以外,其他都可以
[^x]
3.预定义字符集
已提供的常用字符集的简化
-
一位数字 [0-9]
\d -
一位数字、字母、下划线 [0-9a-zA-Z_]
\w -
一位空白字符(\t \n 空格)
\s -
一位除换行外的任意字符
.
不管是备选字符集还是预定义字符集,一个字符集都只能控制一个字
4.量词
规定了一个字符集出现的次数
-
有明确数量
-
字符集{n,m} 最少n次,最多m次
-
字符集{n,} 最少n次,多列不限制
-
字符集{n} 只能n次
-
-
无明确数量
-
字符集? 前面相邻的字符集可有可无,但最多一次
-
字符集* 前面相邻的字符集可有可无,且不限制数量
-
字符集+ 前面相邻的字符集至少一次,且不限制数量
-
5.指定匹配的位置
^开头 &结尾
注意:若^和&同时出现,前加^、后加&,要求从头到尾完全匹配
6.选择和分组
-
选择|:在多个规则中,选择满足的规则执行
规则1|规则2 -
分组()
(规则1|规则2)
//例
/^\d|\w$/ //开头数字,结尾空格
/^(\d|\w)$/ //从头到尾,只能是空格或者数字
//电话的正则
/^(\+86|0086)?\s*1[3-9]\d{9}$/
7.预判
用于密码强度
//例
(?![0-9]+$) //不能全由数字组成
(?![0-9A-Z]+$) //不能全由数字或大写字母组成,也不能只由数字或大写字母组成
字符串中支持正则的API
1.分割
var arr=str.split(reg)
2.替换
- 基本替换法
var newStr=str.replace(reg,"新内容")
默认只会替换第一个关键字,若想全部替换,结尾添加g
替换的内容只能是一个固定的新内容
- 高级替换法
var newStr=str.replace(正则,function(a,b,c){
console.log(a);//正则匹配到的关键字
console.log(b);//正则匹配到的关键字下标
console.log(c);//原文本身
return a.length==2?"**":"***";
})
- 格式化
//根据身份证号匹配出生日
var str="123123123412234567";
var newStr=str.replace(/(\d{6})(\d{4})(\d{2})(\d{2})(\d{4})/,function(a,b,c,d,e,f,g,h){
console.log(a);//正则匹配到的关键字
console.log(b);//是第1个分组获取到的内容
console.log(c);//是第2个分组获取到的内容
console.log(d);//是第3个分组获取到的内容
console.log(e);//正则匹配到的关键字的下标
console.log(f);//原文本身
return c+"年"+d+"月"+e+"日";
})
console.log(newStr);
正则对象
1.创建正则对象
-
直接量方法
var reg=/正则表达式/后缀 -
构造函数:拼接正则情况使用
var reg=new RegExp("正则表达式","后缀")
2.方法
var bool=reg.test(user);结果:true/false