正则表达式的相关语法

正则就是使用特定的符号所描述的一种规则
举例:
  用户名只能输入 数字、字母、下划线 ,同时数字不可以作为开头,同时用户名不能包含中文
  同时长度必须在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;

 

posted @ 2019-01-09 17:22  Ginelle  阅读(188)  评论(0编辑  收藏  举报