zoukankan      html  css  js  c++  java
  • JavaScript基础(12_正则表达式)

    正则表达式

    正则表达式

    • 用于定义一些字符串的规则

      • 计算机可以根据正则表达式,来检查一个字符串是否符合规则

      • 语法:

        • var 变量 = new RegExp("正则表达式", "匹配模式"); (更为灵活)

        • 在构造函数中可以传递一个匹配模式作为第二参数

          • i = 忽略大小写

          • g = 全局匹配模式

          • var reg = new RegExp("需要匹配的文本", "i")
        • 使用字面量创建正则表达式: var 变量 = /正则表达式/匹配模式 (更为简单)

          • var reg = /a/i
      • 正则中的test()方法

        • 如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false

        • 严格区分大小写

      • 或者

        • 使用 | 表示或者的意思

        • 使用[] ,里面的内容也是或的关系,如: [abc] = a或b或c

        • 使用中横线

        • 表示任意小写字母 [a-z]

        • 表示任意大写字母 [A-Z]

        • 表示任意数字 [0-9]

        • 表示abc 或者adc 或者 aec /a[bde]c/

      • 除了

        • 除了ab以外的

        • // 可以写为[^ab]

    基本用法

    • split()

      • 可以将字符串拆分为一个数字

      • 可以传递一个正则表达式作为参数,这样可以根据正则来拆分字符串

      • 这个方法即使不指定全局匹配,也会全部拆分

      • var str = "1a2b3c4d5e6fGa9"
        var reg = new RegExp("[a-z]","i")
        res = str.split(reg)
        console.log(res)  // ["1", "2", "3", "4", "5", "6", "", "", "9"]
    • match()

      • 可以根据正则表达式,从一个字符串中,将符合条件的内容提取查出来

      • 默认情况下,match只会找到第一个符合要求的内容,找到后就停止检索

      • 可以设置正则为全局匹配模式,这样就可以匹配所有的内容了

      • 将匹配到的内容封装到数组中能够返回,即使仅仅匹配到一个

      • var str = "1a2b3c4d5e6fGa9"
        var reg1 = new RegExp("[a-z]","i")
        var reg2 = new RegExp("[a-z]","g")
        res1 = str.match(reg1)
        res2 = str.match(reg2)
        console.log(res1)   //["a", index: 1, input: "1a2b3c4d5e6fGa9", groups: undefined]
        console.log(res2)   //["a", "b", "c", "d", "e", "f", "a"]
    • search()

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

      • 如果没有搜到,则返回-1

      • 可以接收一个正则作为参数,然后根据正则进行检索

      • 只会查找第一个,不能全局匹配

      • var str = "1a2b3c4d5e6fGa9"
        var reg1 = new RegExp("b","i")
        var reg2 = new RegExp("M","g")
        res1 = str.search(reg1)
        res2 = str.search(reg2)
        console.log(res1)   //3
        console.log(res2)   //-1
    • replace()

      • 可以搜索字符串中是否含有指定的内容替换为新的内容

      • 参数

        • 被替换的内容,可以接收一个正则表达式作为参数

        • 新的内容

        • 默认只会替换第一个

        • var str = "1a2b3c4d5e6fGa9"
          var reg1 = new RegExp("b","ig")
          var reg2 = new RegExp("[a-z]","ig")
          res1 = str.replace(reg1,"+")
          res2 = str.replace(reg2,"?")
          console.log(res1) //1a2+3c4d5e6fGa9
          console.log(res2) //1?2?3?4?5?6???9

    量词

    • 创建一个正则表达式,检查一个字符串中是否含有aaa

      • var reg1 = /aaa/
      • var reg2 = new RegExp("a{3}")
    • 通过量词可以设置一个内容连续出现的次数

      • {n} 正好连续出现n次

      • (ab){3}, 表示ab正好连续出现3次

      • {ab{1,3}c}, 表示b可以出现1次到3次

      • {ab{1,}c}, 表示b可以出现1次以上

      • +表示至少1个

      • "*"表示0个或者多个,相当于{0,}

      • ? 表示0个或者1个,相当于{0,1}

      • ^ 表示开头,如/^a/ 表示以a开头

      • $ 表示结尾,如/a$/ 表示以a结尾
    • 案例

      • var phoneStr = "13567890123";
        var reg = /^1[3-9][0-9]{9}$/;
        console.log(reg.test(phoneStr))

    补充

    • "."

      • 任意字符

      • 转译字符

      • 注意 使用构造函数时,由于他的参数是字符串,而是字符串中转译字符

      • 如果要使用则需要使用\代替
    • w

      • 表示任意字母、数字、下划线

    • W

      • 表示出了任意字母、数字、下划线

    • d

      • 表示任意数字

    • D

      • 表示除了数字

    • s

      • 表示空格

    • S

      • 表示除了空格

    • 

      • 单词边界

    • B

      • 除了单词边界

    • 案例

      • // 检查字符串中是否含有.
        var reg = /./;
        var str = prompt("输入用户名");
        // 去除开头和结尾的所有空格
        console.log(str.replace(/^s*|s*$/g, ""));
  • 相关阅读:
    (译).NET4.X并行任务Task需要释放吗?
    微软面向高并发应用而推出的新程序库——TPL Dataflow
    C# 5.0 Async函数的提示和技巧
    内存泄露——文章
    AJAX POST请求中参数以form data和request payload形式在php中的获取方式
    NodeJS中间层搭建
    HTML5上传预览
    laravel 图片上传 ajax 方式
    抽奖程序
    IText 生成页脚页码
  • 原文地址:https://www.cnblogs.com/lich1x/p/13700872.html
Copyright © 2011-2022 走看看