zoukankan      html  css  js  c++  java
  • JS中的正则表达式

    >>> 关于正则表达式 

      正则表达式在网站开发过程中,用来匹配验证字符串是否规范,用途非常广泛,下面简单了解正则表达式:

    一、正则表达式的声明

     1、字面量声明:

       / 正则表达式规则 / 匹配模式

       例:var reg = /^abc$/i;

     2、new关键字声明:

       var reg = new RegExp("^abc$",i);

    二、正则表达式规则的描述

      规则描述:

     符号 描述 
    /.../  代表一个模式的开始和结束 
     ^ 匹配字符串的开始 
     $ 匹配字符串的结束 
     s 任何空白字符 
    S 任何非空白字符
     d 匹配一个数字字符,等价于[0-9] 
    除了数字之外的任何字符,等价于[^0-9] 
    w 匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9]
    W 任何非单字字符,等价于[^A-Za-z0-9_]
    . 除了换行符之外的任意字符

       量词描述:

     符号 描述 
    {n}  匹配前一项n次
     {n,} 匹配前一项n次,或者多次
    {n,m} 匹配前一项至少n次,但是不能超过m次 
    * 匹配前一项0次或多次,等价于{0,} 
    + 匹配前一项1次或多次,等价于{1,}
     ? 匹配前一项0次或1次,也就是说前一项是可选的

      符号:

     符号 描述 
    | 匹配选择字符中任意一个,如 p|q,可匹配q或p
     () 分组
    [] 要匹配的数据
    ^ 取反

    三、正则表达式的常用模式

     1、g 表示全局匹配。不加g表示只匹配第一个符合要求的字符串;       

            "aaa".replace(/a/,"*"); --> "*aa"
    
           "aaa".replace(/a/g,"*"); --> "***"  

     2、i 表示忽略大小写匹配,默认要求大小写也必须符合正则要求。

      "aAa".replace(/A/,"#"); --> "a#a"
    
      "aAa".replace(/A/i,"#"); --> "#Aa"
    
      "aAa".replace(/A/gi,"#"); --> "###"

     3、m 表示多行匹配模式:

       如果不带m,表示一个字符串只有一个开头一个结尾;

       如果带m,那么对于多行字符串,可以有多个开头多个结尾。

    例一:
    
      var str="This is an antzone good";   var reg=/an$/;   console.log(str.match(reg));   不能够匹配字符串"an",尽管"an"后面已经换行了,但是并没有采用多行匹配,所以不是字符串行的结尾。 例二:   var str="This is an antzone good";   var reg=/an$/m;   console.log(str.match(reg));
      可以匹配字符串
    "an",因为采用了多行匹配。 例三:   var reg = /^b/;   var str = 'test bbs';   execReg(reg,str);
      匹配失败,因为字符串的开头没有b字符。但是加上m修饰符之后: 例四:   
    var reg = /^b/m;   var str = 'test bbs';   execReg(reg,str);
      匹配到b,因为加了m修饰符之后,
    ^已经表示行首,由于bbs在字符串第二行的行首,所以可以成功地匹配。

       [多行字符串]

        ① 字符串中用 表示换行:"abc abc".replace(/^a/gm,"*");

        ② ES6中可以用反引号``表示字符串,这种字符串,支持直接换行。

     

     4、检测方法

     (1)reg.test(str):检测一个字符串是否符合正则要求,返回true或false。

     

     (2)reg.exec(str):检测一个字符串是否符合正则要求,符合返回数组,不符合返回null。

               返回数组的格式:

        ① index属性: 表示字符串中,第几个字符,开始匹配正则。

        ② input属性: 表示完整的被检索字符串。

        ③ 下标第0个: 表示 符合正则要求的 字符串子串。

        ④ 下标从1往后: 表示 匹配正则中()包裹的字符串子串。也就是说,正则中有几个(), 返回的数组中就有几个下标。

          例:

          /12(3)(d)56/.exec("aaa123056bbb"); 

         [
           0:"123056",
    
           1:"3",
    
           2:"0",
    
           index:3,
    
           input:"aaa123056bbb",
    
           length:3
    
          ]

    四、正则表达式常用验证练习

     1、验证邮箱

      var reg = /^[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-zA-Z]+(.[a-zA-Z]{2,3})?$/;
    
      var mail = "123@qq.com";
    
      console.log(reg.test(mail));

     2、验证邮政编码(6位)

      var reg = /^d{5}$/;
    
      var mailno = "251400";
    
      console.log(reg.test(mailno));

     3、验证手机号(第一位为1,第二位为3/5/7/8,共11位)

      var reg = /^1(3|5|7|8)d{9}$/;
    
      var phone = "17862009622";
    
      console.log(reg.test(phone));

     4、验证年龄(1~120)

      var reg = /^(d|[1-9]d|1[01]d|120)$/;
      // var reg = /^((1[0-1]|[1-9])?d|120)$/;
    
      var age = "121";
    
      console.log(reg.test(age));
  • 相关阅读:
    Linux目录操作
    图形库
    Mybatis两表连接(一对一)
    ssm图片上传到数据库
    ajax函数实例
    html、css基础
    HDU 1213 How Many Tables
    HTML5简介
    在script中创建标签的三种方式
    html css js jq问题总结
  • 原文地址:https://www.cnblogs.com/zyp777/p/8980335.html
Copyright © 2011-2022 走看看