最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • js核心笔记第五天

    正文概述 掘金(wffchong)   2021-08-26   355

    正则

    1,正则表达式的基本使用

    正则表达时通长使用在 切割,替换,验证 等等

    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. 备选字符集:/[备选字符集]/

      强调: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] -> 很少使用,范围太广
      
    2. 预定义字符集:简化备选字符集写法

       一位数字:\d
       一位字母、数字、下划线:\w
       一位空白字符:\s 包含了空格,tab制表符,换行
       ​
       一位除了换行外的任意字符:.  -> 很少使用,范围太广
       ​
       建议:正式开发中,优先使用预定义字符集,预定义字符集实现不了在用备选字符集补充
      

      问题:不管是备选字符集还是预定义字符,一个都只管一位

    3. 量词:规定一个字符集出现的次数:

       1、有明确数量:
                  字符集{n,m}:前边相邻的字符集,至少要有n次,最多m次
                  字符集{n,}:前边相邻的字符集,至少要有n次,多了不限
                  字符集{n}:前边相邻的字符集,必须n次
       ​
       2、没有明确数量
                  字符集?:前边相邻的字符集,可有可无,最多1次
                  字符集*:前边相邻的字符集,可有可无,多了不限
                  字符集+:前边相邻的字符集,至少一次,多了不限
      
    1. 选择和分组: 选择:在多个规则中多选一 规则1|规则2 分组:将多个字符集临时组成一组子规则 (规则1|规则2)

           特殊:/^[0-9]|[a-z]$/ -> 以0-9开头 或者 a-z 结尾 都是对的,并没有同时使用^$,不会完全匹配
                 /^([0-9]|[a-z])$/ -> 从头到尾:要么是0-9 或 是a-z
      
    1. 指定匹配的位置: 开头:^ 结尾:$ 特殊:两者同时使用,从头到尾完全匹配 - 只要是做验证!!!
    1. 密码强度:4位字母和数字的组合,至少要有一位大写字母和一位数字 /^[0-9A-Za-z]{4}$/ -- 只能实现是4位数字或者字母的组合,不能完成上面的要求

      预判公式:(?![0-9]+)>不能全由数字组成(?![AZ]+) -> 不能全由数字组成 (?![A-Z]+)−>不能全由数字组成(?![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

    1. 切割

       const arr = str.split(str / reg);
      
    2. 替换: - 笔试中非常常见

       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); - 得到一个布尔值,然后我们根据布尔值设置不同的样式,不同的样式决定了你能不能提交

    \


    起源地下载网 » js核心笔记第五天

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元