• 正则表达式的相关语法


    正则就是使用特定的符号所描述的一种规则
    举例:
      用户名只能输入 数字、字母、下划线 ,同时数字不可以作为开头,同时用户名不能包含中文
      同时长度必须在6-20之间
        var str = username;
        if( /^([a-zA-Z]\w+){6,20}$/.test(str) ){
             //符合规则
        }
    如何创建正则表达式?
      字面量创建
         var reg  = /a/
      构造函数创建
       var reg = new RegExp('a','g');
     
    正则表达式中的一些常用匹配符
      \d  数字
      \D  非数字
      \w  数字字母下划线
      \W 非数字字母下划线
      \s   空白字符
      ^ : 以什么开始
        $ : 以什么结束
      \. : 代表的是.本身。(.有特殊的意义表示除换行以外的意义字符,想代表本身需要转意)
      \ :代表着转义
      [\u4e00-\u9fa5]:验证中文
     
    正则表达式中的一些常用量词 
    量词是什么?

    是出现在元字符的后面,修饰前面的这个字符出现的次数

           ? :  0-1次 => 可以出现可以不出现
           * : 0-多次  => 可以不出现,也可以出现无数次
           + :  1-多次 => 至少出现1次
          {n} : 出现n次
          {n,} : 至少出现n次
          {n,m} : 出现n到m次
     
    正则中的两种或者:   |  [ ]
        "|" 代表或者 => 使用或者关系的时候,为了保证严谨。我们不妨加小括号来改变优先级。
        [xyz] => x或者y或者z中的一个 => 无论中括号多长都是占一个字符
        [^xyz] => 除了xyz的任意一个
        [+-] => 在中括号这个或者中+和-都是本身
        [.] => 代表.本身
        [a-z] => 代表的a-z中的一个
        [0-9] => 0-9中的一个
        \w => [0-9a-zA-Z_]
        /[abc]/字符中只要包含一个  a或b或者c就为true
        /[^xyz]/  字符串中只要有一个不是x也不是y也不是z就是true
    字面量创建和构造函数的区别?
      1: 使用字面量的方式是不可以把变量添加到正则中
      2 : 构造函数创建方式  => 第一个参数是一个字符串(就是字面量的方式放在两个斜杠中的那些字符) => 第二个参数就是修饰符(img),也是一个字符串
      ps: 只要正则中需要引入变量,那么只能使用构造函数创建方式
      ps: 如果在构造函数方式创建正则使用\d等特殊元字符,还需要转义一次。也要在前面添加一个'\' 
      var name = "qianfeng";
           var reg = /name/;
           var str = "qianfeng"
           console.log(reg.test(str))
     
      var name = "hello";
           var reg = new RegExp(name);//==>/hello/
           var str = "hello";
           console.log(reg.test(str))//true  
     
      var reg = new RegExp("^\\d+$");
           var str = "1234";
           console.log(reg.test(str))//true      
     
    exec捕获  和  match
      exec捕获用法:
       1 捕获结果: exec的捕获结果是一个数组,数组里的第一项是正则捕获到的内容
       2 捕获结果中还包含index属性,是捕获开始的索引位置,input属性是捕获的那个整个字符串              
       3 如果捕获当次没有捕获到结果返回null
      match是字符的方法 :match:字符串的方法,捕获出来的是一个数组,必须加g,才能全局捕获
     
      exec实现match
      var str = "qian2017feng2018pei2019";
      var reg = /\d+/g;
      var res = reg.exec(str);
      var arr = [];
           while(res){ //一直捕获到为null的时候;结束while循环
                 arr.push(res[0]);
                 res = reg.exec(str);
           }
           console.log(arr)
     
    正则的修饰符
      g : 全文全局匹配
       i : 忽略大小写
       m : 多行匹配(了解)
     
    常用的正则 
      1.检查邮政编码//共 6 位数字,第一位不能为 0          
      /^[1-9]\d{5}$/
     
      2.删除一个字符串当中多余空格
      str.replace(/\s+/g,"");
     
      3.删除首尾空格
      str.replace(/^\s+/g,"").replace(/\s+$/g,"");
     
      4.电子邮件( xxxxx @ xxxx(.xxxx)+)
      /^\w+@\w+(\.\w+)+$/
     
      5.手机号  1 3|5|8|7|4
      /^1[34578]\d{9}$/
     
      6.身份证
      /^\d{17}(\d|X)$/
     
      7.匹配一个QQ邮箱地址  78323432@qq.com
      var reg = /^\d+@qq\.com$/
     
    replace 替换 
      replace是字符串的方法,每次只能替换一次,想全局替换,必须加g;
  • 相关阅读:
    支持向量机SVM知识梳理和在sklearn库中的应用
    Android P HIDL demo代码编写 (原创)
    Android P HIDL服务绑定模式与直通模式的分析 (原创)
    NFCApplication 启动分析(原创)
    Android native进程间通讯的实例 (原创)
    android 6.0 高通平台sensor 工作机制及流程(原创)
    NFC OMA 访问
    NXP NFC移植及学习笔记(原创)
    自定义View实战
    从0开始学自定义View -1
  • 原文地址:https://www.cnblogs.com/ginelle/p/10245678.html
Copyright © 2020-2023  润新知