• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

js正则表达式

武飞扬头像
Jon34567
帮助1

18.正则表达式

  • 正则用来定义一些字符串的规则,程序可以根据这些规则来判断一个字符串是否符合规则,也可以将一个字符串中符合规则的内容提取出来。

18.1 创建正则表达式

1. 构造函数创建正则表达式

var reg = new RegExp(“正则”,“匹配模式”);

注意:使用构造函数时,由于它的参数是一个字符串,而\是字符串中转义字符,如果要使用\则需要使用\\来代替

匹配模式:

  1. i:忽略大小写
  2. g:全局匹配模式
//test()
//使用这个方法可以检查字符串是否符合正则表达式的规则,如果符合返回true,否则返回false
var reg = new RegExp("a", "i");
console.log(reg.test("aajjj3"));
//true

2. 使用字面量创建正则表达式

语法:var reg = /正则表达式/匹配模式

匹配模式可以多个一起写:/gi

var reg = /a/i;
console.log(reg.test("abc"));
//true
//--------或的写法---------
//1. | 或
var reg = /a|b|c/;
//2. [] 或  
//[abc] == a|b|c
var reg = /[abc]/;
//3. [x-y] 或  [x-y] x的ascii到y的ascii码之间的值
//[a-c] == a|b|c == [abc]
//---------元符号---------

18.2 正则表达【字符串】相关方法

  • split()

    1. 可以根据指定内容将一个字符串拆分为一个数组

    2. 参数:

      1. 需要一个字符串作为参数,将会根据字符串去拆分数组
      2. 可以接收一个正则表达式,此时会根据正则表达式去拆分数组
    var str = "acuggu"
    var result = str.split(/[A-z]/);
    console.log(result);
    //"a,c,u,g,g,u"
    
  • match()

    1. 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
      默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
    2. 可以为一个正则表达式设置多个匹配模式,且顺序无所谓
    var str = "hello abc aec abc"
    //我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
    var result = str.match(/a[bef]c/ig);
    console.log(result);
    //"abc,aec,abc"
    //match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果
    console.log(Array.isArray(result));
    //true
    
  • replace()

    1. 可以将字符串中指定内容替换为新的内容

    2. 参数:

      1. 被替换的内容,可以接受一个正则表达式作为参数
      2. 新的内容
var str = "hello abc aec abc"
//空串则为删除   
//默认只会替换第一个
var result = str.search(/a[bef]c/gi, "@_@");
var result2 = str.search(/a[bef]c/gi, "");
console.log(result);
//"hello @_@ @_@ @_@"
  • search()

    1. 可以搜索字符串中是否含有指定内容

      如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1

    2. 它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串

      var str = "hello abc aec abc"
      var result = str.search(/a[bef]c/);
      console.log(result);
      //"6"
      
    3. serach()只会查找第一个,即使设置全局匹配也没用

18.3正则语法

  1. 量词

    • 通过量词可以设置一个内容出现的次数,量词只对它前边的一个内容起作用

      {n} 正好出现n次
      {m,n} 出现m-n次
      {m,} m次以上

      至少一个,相当于{1, }
      *个或多个,相当于{0, }
      ? 0个或1个,相当于{0,1}

  2. 边界表达式(不要在java中用,javaScript中用)
    ^:正则开始
    $:正则结束 :注意结束前一个才是结束匹配

    //以a开始
    reg = /^a/
    //以a结束
    reg = /a$/
    //只能匹配a
    reg = /^a$/
    reg.test("aaa");//false
    reg.test("a");//true
    
    表达式 匹配值
    . 匹配除换行符(\n、\r)之外的任何单个字符,相等于[^\n,\r]。【若想查找点必须用转义字符\.】
    \w 任意字母、数字、下划线, [A-za-z0-9_]
    \s 匹配所有空白符,包括换行
    \S 非空白符,不包括换行。
    \W 除了任意字母、数字、下划线, [A-za-z0-9_]
    \d 任意的数字 [0-9]
    \D 除了数字 [ ^0-9]
    \b 单词边界
    \B 除了单词边界
  3. 在正则表达式中使用\作为转义字符

    \. 来表示.
    \\ 表示\

  4. 用构造函数创建正则表达式【字符串的转义字符】

    \\. 来表示.
    \\\\ 表示\


  • 匹配手机号
//1. 11位
//2. 以1开头
//3. 第二位3-9
//4. 三位以后任意数字九个
var phoneReg = /^1[3-9][0-9]{9}$/
  • 去掉两端的空格:
var s = "        	f    afa    ";   
s = s.replace(/^\s*|\s*$/g,"");  
  • 匹配单词
reg = /\bchild\b/
  • 电子邮件的正则
    <script>
        /*
         * 电子邮件:
         *  hello     .       nihao     @    abc   .com.cn
         * 任意字母数字下划线 . 任意字母数字下划线 @任意字母(2-5位).  任意字母(2-5位)       * 
         * 
         * \w{3,} (\.\w )* @  [A-z0-9]  (\.[A-z]{2,5}){1,2}
         * 
         */
        var emailReg = /^\w{3,}(\.\w )*@[A-z0-9] (\.[A-z]{2,5}){1,2}$/;

        var email = "abc.hello@163.com";
        console.log(emailReg.test(email));
    </script>

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfekbc
系列文章
更多 icon
同类精品
更多 icon
继续加载