JS第三周——day1

93 阅读2分钟

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说明不通过