正则
1,正则表达式的基本使用
正则表达时通长使用在 切割,替换,验证 等等
-
最简单的正则表达式:关键字原文 'no' --> /no/ig
i:忽略大小写 g:全部
const str = 'no sta No sfas no' const reg = /no/ig const newStr = str.replace(reg, '***') console.log(newStr); // *** sta *** sfas ***
-
备选字符集:/[备选字符集]/
强调:1,一个中括号,只管一个字符
2,问题1:正则表达式默认只要满足了,就不管后面的了,但是我们做验证的时候肯定是希望用户输入的是全部满足才得行
解决:只要是做验证,必须:前加^,后加$ - 从头到尾完全满足我们的要求
const user = 'a' const reg = /[0-9]/ reg.test(user) // 返回一个布尔值 false ,用户输入的a 不满足reg的正则规则,0-9之间
问题2:如果是连续的ascii码的字符,我们可以直接省略掉中间部分,用一个-代替
比如:一位数字:[0-9] 一位字母:[A-Za-z] 一位字母、数字、下划线:[A-Za-z0-9_] 一位汉字:[\u4e00-\u9fa5]
除了xxx之外:[^xxx] -> 很少使用,范围太广
-
预定义字符集:简化备选字符集写法
一位数字:\d 一位字母、数字、下划线:\w 一位空白字符:\s 包含了空格,tab制表符,换行 一位除了换行外的任意字符:. -> 很少使用,范围太广 建议:正式开发中,优先使用预定义字符集,预定义字符集实现不了在用备选字符集补充
问题:不管是备选字符集还是预定义字符,一个都只管一位
-
量词:规定一个字符集出现的次数:
1、有明确数量: 字符集{n,m}:前边相邻的字符集,至少要有n次,最多m次 字符集{n,}:前边相邻的字符集,至少要有n次,多了不限 字符集{n}:前边相邻的字符集,必须n次 2、没有明确数量 字符集?:前边相邻的字符集,可有可无,最多1次 字符集*:前边相邻的字符集,可有可无,多了不限 字符集+:前边相邻的字符集,至少一次,多了不限
-
选择和分组: 选择:在多个规则中多选一 规则1|规则2 分组:将多个字符集临时组成一组子规则 (规则1|规则2)
特殊:/^[0-9]|[a-z]$/ -> 以0-9开头 或者 a-z 结尾 都是对的,并没有同时使用^$,不会完全匹配 /^([0-9]|[a-z])$/ -> 从头到尾:要么是0-9 或 是a-z
- 指定匹配的位置: 开头:^ 结尾:$ 特殊:两者同时使用,从头到尾完全匹配 - 只要是做验证!!!
-
密码强度:4位字母和数字的组合,至少要有一位大写字母和一位数字 /^[0-9A-Za-z]{4}$/ -- 只能实现是4位数字或者字母的组合,不能完成上面的要求
预判公式:(?![0-9]+)−>不能全由数字组成(?![A−Z]+) -> 不能全由大写字母组成 (?![0-9a-z]+$) -> 不能全由数字组成,不能全由小写组成,也不能全由数字和小写的组合组成 预判仅仅只是一个条件
const user = '0000'
const user1 = 'A000'
const user2 = '00A0'
const reg = /^(?![0-9a-z]+$)(?![A-Za-z]+$)[0-9A-Za-z]{4}$/
// 一共四位,不能全为小写,不能全为数字,不能全为小写和数字,不能全为大写和小写,不能全为大写或则小写,只能是0-9A-Za-z之间的
console.log(reg.test(user)); // false
console.log(reg.test(user1)); // true
console.log(reg.test(user2)); // true
2,字符串中支持正则的API
-
切割
const arr = str.split(str / reg);
-
替换: - 笔试中非常常见
1、基础替换法: const newStr = str.replace(/reg/g,"新内容") 2、高级替换法: str = str.replace(/[我卧你][去草槽艹]+/g,function(a,b,c){ //a正则匹配到的关键字 //b正则匹配到的关键字的下标 //c是原文 return a.length==2?"**":"***"; }); 3、格式化: let str = '500235200002066134' str=str.replace(/(\d{6})(\d{4})(\d{2})(\d{2})(\d{4})/,function(a,b,c,d,e,f,g,h){ //在replace的时候,正则出现了分组, //在形参a的后面就会出现n个形参,具体看你有多少个分组,最后肯定有两个前一个代表下标,后一个代表原文 //第一个分组获得的内容会保存在第二个形参中 //第二个分组获得的内容会保存在第三个形参中 //... return b+"年"+c+"月"+d+"日"; })
3,正则对象
创建: 1、直接量:const reg = /正则表达式/后缀; 2、构造函数:const reg = new RegExp("正则表达式","后缀")
方法: 验证:const bool = reg.test(str); - 得到一个布尔值,然后我们根据布尔值设置不同的样式,不同的样式决定了你能不能提交
\
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!