1、正则表达式
定义字符串中【字符出现规则】的表达式
作用:切割、替换、验证
语法:/正则表达式/
1、最简单的正则:关键字本身
"no"——/no/ig
i:忽略大小写
g:全部选择
2、备选字符集:
规定了【一位】Z字符可用的备选字符列表
/[备选字符集]/
注意:①一个中括号只能匹配一位字符;②正则默认只要满足后,就不再管后续操作,后续用户可以乱输入
【只要做验证】:
必须/^[备选字符集]$/,前加 ^ 后加 $ 代表要求从头到尾完全匹配(用户输入的东西必须和规定的一样!)
^:以XXX开头
$:以XXX结尾
特殊:①如果备选字符集中,Unicode号是连续的,那么中间部分可用 - 来代替
例:
一位数字:[0-9];
一位字母:[A-Za-z];
一位数字、字母、下划线:[0-9A-Za-z_];
一位汉字:[\u4e00-\u9fa5];
②除了XXX之外,其他都可以
[^XXX]
3、预定义字符集
一位数字:\d
一位数字、字母、下划线:\w
一位空白字符(空格、制表符、换行):\s
除了换行之外的任意字符/: .
建议:优先使用与定义字符,如果预定义字符集没有,再使用备选字符集补充
强调:不管是备选字符集,还是预定义字符集,一个都只管一位
4、量词
规定了一个字符集出现的次数
①有明确数量
字符集{n,m}: 前面相邻的字符集,最少出现n次,最多出现m次
字符集{n,}:前面相邻的字符集,最少出现n次,最多不限
字符集{n}:前面相邻的字符集,只能出现n次
②没有明确的数量
字符集?:前面相邻的字符集,可有可无,最多一次
字符集*:前面相邻的字符集,可有可无,最多不限
字符集+:前面相邻的字符集,至少一次,最多不限
5、选择和分组
选择:可以在多个规则中选择满足的规则的进行执行
规则1|规则2
分组:添加子规则
( 规则1|规则2)
6、预判:密码强度
(?![0-9]+$)字符集量词:不能全由数字组成
(?![0-9A-Z]+$)字符集量词:不能全由数字组成,不能全由大写组成,不能由数字和大写组成
(?![a-z0-9]+$)(?![a-zA-Z]+$)(?![A-Z0-9]+$)字符集量词:
不能全由数字组成,不能全由大写组成,不能由全小写,不能是小写和数字的数字的组合,不能是小写和大写的组合,不能是大写和数字的组合
2、字符串中支持正则表达式的API:分割、替换
1、分割字符串:
var arr=str.split(reg);
2、替换字符串:
①基本替换法:
var newStr=str.replace(reg,"新内容");
特殊:1、默认只会替换第一个关键字,想要替换所有的需要加后缀g;2、替换的内容只能是一个【固定】的新内容
②高级替换法:
var newStr=str.replace(/[我卧窝][操艹草]+/g,function(a,b,c)){
console.log(a);//正则匹配的关键字
console.log(b);//正则匹配的关键字下标
console.log(c);//原文本身
return a.length=2?"**":"***";
});
③格式化:如果替换的API使用正则时,并且里面带有分组,那么会得到更多的形参
var newStr=str.replace(reg,function(a,b,c,...)){
console.log(a);//正则匹配的关键字
console.log(b);//第一个分组获取到的内容
console.log(c);//第二个分组获取到的内容
...
return "格式化的东西";
});
3、正则对象
创建正则对象:2种
直接量:var reg=/正则表达式/后缀;
构造函数:var reg=new RegExp("正则表达式","后缀");
方法:
var bool=reg.test(user);//user为用户输入
布尔值为true,说明用户输入的符合要求;false说明不通过