首页 > 其他分享 >09——正则

09——正则

时间:2023-03-05 10:47:39浏览次数:24  
标签:console log re 09 字符串 正则 str var

第九周

正则表达式

  • 什么是正则表达式

    • 描述字符串的 " 构成模式" , 检查字符串是否符合预定的格式要求
    • 大概样貌 : var regexp = /^m\d\d\dn$/ 下面细节
  • 正则表达式的基本使用

    • 正则表达式的创建

      • var regexp = / 内容 /
      • new RegExp( ' 内容 ' )
      • typeof reg // object
    • 元字符

      • 一位指定类型的字符

      • 元字符
        \d 一个数字
        \D 一个非数字
        \w 一个字符 ( 数字/ 字母/ 下划线 )
        \W 一个非字符
        \s 一个空白, 包括空格 制表符 换行符
        . 任意字符
        ^ $ 开头 结尾
      • 例子:

        • 某快递公司运单号形式是这样的 : 123-4567-890 , 请使用正则表达式检查某字符串是否符合格式

        • 某产品验证密钥形式是这样的 : □□□-□□□□-□□□ , 其中 □ 表示字母数字或下划线 , 请使用正则表达式检查某字符串是否符合格式

        • 某产品批号 : 123.45^67#89

        • var regexp1 = /^\d\d\d-\d\d\d\d-\d\d\d$/;
          var regexp2 = /^\w\w\w-\w\w\w\w-\w\w\w$/;
          var regexp3 = /^\d\d\d\.\d\d\^\d\d\#\d\d$/;       // 注意这里的# 加不加\ 一样  
          
        • 注意 : \ 的本意需要两个 \

    • 方括号表示法

      • 创建一个字符集合,匹配方括号中的任意一个

      • 例子:某校学号规定,第一位是字母,b表示本科生,y表示研究生,后面是7位数字,请使用正则

      • var regexp1 = /^[by]\d{7}$/
        
      • 其他用法: 短横 - 表示范围 ^ 表示取反

      • 元字符 等价的方括号表示法
        \d [0-9]
        \D [^0-9]
        \w [a-zA-Z0-9_]
        \W [^a-zA-Z0-9_]
      • 题目1:验证字符串是否是5位字母,大小写均可

      • 题目2:验证字符串是否是5位字母,且仅有小写字母,点构成

      • 题目3:验证字符串是否是4位小写字母,且最后一位不能是m

      • var regexp1 = /^[a-zA-Z]{5}$/
        var regexp2 = /^[a-z\.]{5}$/
        var regexp3 = /^[a-z]{3}[a-ln-z]$/
        
    • 量词

      • 量词 含义
        * 匹配前一个表达式0 次或n 次,等价
        + 匹配前一个表达式1 次或n 次,等价
        匹配前一个表达式0 次或1 次,等价
        前一个字符刚好出现n 次
        前一个字符至少出现n 次
        前一个字符至少n 次,至多m 次
      • 题目1:验证字符串是否符合手机号码规则,11 位数字,并且以1 开头

      • 题目2:验证:以字母开头,中间是任意位数字(最少一位),并以字母结尾

      • 题目3:验证某字符串是否符合网址规则,以www. 开头,中间是任意位的字符(字母数字下划线),最后以 .com 或者 .com.cn 结尾

      • var regexp1 = /^1\d{10}$/
        var regexp2 = /^[a-zA-Z]\d+[a-zA-Z]$/
        var regexp3 = /^www\.\w+\.com(\.cn)?$/
        
    • 修饰符

      • i :不区分大小写搜索
      • g : 全局搜索
      • 使用:
        • var re = /m/gi
        • var re = new RegExp( ' m ' , 'gi')
  • 正则表达式和字符串

    • 正则表达式的相关方法

      • test() 测试字符串是否匹配正则,返回布尔

      • exec() 根据正则,在字符串中查找,返回结果数组或null

        • // 注意这里是,全局搜索
          var str = 'abc123def456ghi789';
          var re = /\d+/g;
          var result1 = re.exec(str);
          var result2 = re.exec(str);
          var result3 = re.exec(str);
          var result4 = re.exec(str);
          var result5 = re.exec(str);
          
          console.log(result1);
          console.log(result2);
          console.log(result3);
          console.log(result4);
          console.log(result5);
          
          
          // 结果数组:  (循环找)
          // ["123", index: 3, input: "abc123def456ghi789", groups: undefined]
          // ["456", index: 9, input: "abc123def456ghi789", groups: undefined]
          // ["789", index: 15, input: "abc123def456ghi789", groups: undefined]
          // null
          // ["123", index: 3, input: "abc123def456ghi789", groups: undefined]
          
          
          // 换一个写法
          
          
          var str = 'abc123def456ghi789';
          var re = /\d+/g;
          var result;
          while(result = re.exec(str)){
              console.log(result);
          }
          
          
          // 注意,赋值语句的返回值是等号右边的值
          
        • 没有 g 全局搜索,一直返回第一个

    • 字符串的相关方法

      • 方法 简介
        search() 在字符串中根据正则进行查找匹配,返回首次匹配到的索引,找不到返回 -1
        match() 在字符串中根据正则进行查找匹配,返回一个数组,找不到返回null
        replace() 使用替换字符串替换掉匹配到的子字符串,可以使用正则
        split() 分隔字符串为数组,可以使用正则
      •       var str = "abc123def4567ghi890";
          
              console.log(str.search(/\d+/g));
              // 3
              // search 只能找到第一个的索引,没有那么强大
          
              console.log(str.match(/\d+/g));
              // ['123', '4567', '890']
              // match 返回所有匹配的结果
              console.log(str.match(/\d+/));
              console.log(str.match(/\d+/));
              // ['123', index: 3, input: 'abc123def4567ghi890', groups: undefined]
              // 不加 全局搜索 的match   每次都返回第一个的详细数组
          
              console.log(str.replace(/[a-z]+/g, "*"));
              // *123*4567*890
          
              console.log(str.split(/\d+/));
              console.log(str.split(/\d+/g));
              // ['abc', 'def', 'ghi', '']
              // split  有没有全局搜索都一样
        
  • 正则表达式的应用

    • 表单验证

Other

  • Banner轮播图

    • if(i == idx % 5)
      // 0、1、2、3、4 % 5 的结果都是它们本身,而5 % 5为 0
      
  • 返回顶部动画

    • 固定定位元素
  • 垂直菜单

标签:console,log,re,09,字符串,正则,str,var
From: https://www.cnblogs.com/autowe/p/17179972.html

相关文章

  • 【喜报】高科技PCB行业排头兵企业S/4HANA 1709拆分项目成功上线
    2023年2月20日,SNP与金牌合作伙伴–上海翰耐信息科技有限公司一起合作的高科技行业某客户S/4HANA1709拆分项目成功上线。此项目为SNP中国的又一单S/4拆分项目。祝贺中国......
  • 5.JavaScript提供的正则表达式API、可以使用正则表达式解决常见问题(邮箱校验、URL解析
    JavaScript提供的正则表达式API、可以使用正则表达式解决常见问题(邮箱校验、URL解析、去重等)js正则常用API1.五个常用方法①testreg.test(str);//返回是否包含正则......
  • unity3D怪物的死亡与刷新09
    死亡动画播放后,下次射击之前消失MonsterManagerusingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassMonsterManager:Mon......
  • JavaScript 邮件的正则
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *电子邮件 * hello.nihao......
  • JavaScript 正则表达式2
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *创建一个正则表达式检查一个字符串中......
  • #yyds干货盘点#nginx正则表达式
    nginx正则匹配说明:细则:前缀匹配优先其中,最长匹配优先而后,按配置顺序匹配正则,正则第一个匹配到后终止无正则匹配,则用前面记住的前缀"="精确匹配,匹配后终止"~"区分大小写匹......
  • csp201809-4
    这是一道差分约束求最长路的图的问题:通过已知的条件可以容易列出以下不等式:2*a1<=x1+x2<=2*a1+13*a2<=x1+x2+x3<=3*a2+23*a3<=x2+x3+x4<=3*a3+2       ......
  • [oeasy]python0099_雅达利大崩溃_IBM的开放架构_兼容机_oem
    雅达利大崩溃回忆上次内容个人计算机浪潮已经来临苹果公司迅速发展微软公司脱离mits准备做纯软件公司IBM用大型机思路制作的5100惨败Commodore64既做......
  • 正则表达式
    先开个篇,研究下正则表达式由于字母数字是连续相邻的,所以可以直接组合//正则表达QRegularExpressionregexp("(\[0-9a-zA-Z]+)");//匹配字母数字QRegularE......
  • MyBatis_09(逆向工程)
    MyBatis的逆向工程正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成......