• JS 9


    1. 正则:

     指定匹配位置

    2. ***String API:

        替换: 衍生: 删除和格式化

        切割

    3. ***RegExp对象

    1. 正则:

        指定匹配位置: 三个位置:

          字符串的开头  ^

          字符串的结尾  $

             比如: 开头的空字符: ^s+

                      结尾的空字符: s+$

                      开头或结尾的空字符^s+|s+$

             固定套路: 只要希望字符串和正则从头到尾完全匹配

                             比如同时前加^后加$

                    只要用正则表达式执行验证时,必须前加^后加$

          单词边界          包含: ^  $   空格    标点

             比如: 单词首字母: [a-z]

                      单词尾字母: [a-z]

                      单独的一个单词no: no

    2. ***StringAPI

      替换: 简单替换: str=str.replace(/正则/ig, "替换值");

               问题: 不能根据不同的关键词,选择不同的值替换

         解决: 高级替换:

          str=str.replace(/正则/ig,function(kw){

              //kw会自动获得本次找到的关键词内容

              return //根据不同kw,返回不同的替换值

          })

         何时: 只要根据不同的关键词,替换不同内容时

      衍生:

        删除: 将关键词替换为""

        格式化: 将原字符串重新拼接为新的格式

          比如: "19831226" => "1983年12月26日"

          2步: 1. 正则将原字符串分组

                     /(d{4})(d{2})(d{2})/

                   //    1         2         3

                 2. 使用简单替换: str.replace(/正则/,"...$n...")

                      $n可自动获得第n个分组的子内容

                        n从1开始

      切割: 将原字符串,按指定字符,分隔为多个子字符串

          如何: var substrs=str.split(/正则/)

             返回切割后的多个子字符串组成的数组

                    结果中,不再包含分隔符

          固定套路: 将字符串打散成字符数组: var chars=str.split("")

    3. ***RegExp:

        什么是: 封装一条正则表达式, 提供了使用正则表达式进行查找和验证的API

        何时: 1. 查询关键词的第四种情况: 即查内容,又查位置

                 2. 利用正则表达式执行验证

        如何:

           创建: 2种:

              1. 如果正则表达式是固定不变的: var reg=/正则/ig;

                   强调: /正则/中正则中的/都要转义为/

              2. 如果正则表达式是动态生成的:

                   var reg=new RegExp("正则"[,"ig"]);

                   强调: "正则"中的" 都要转义为"  \

                     比如: "d{6}" => "\d{6}"

                    

    1. ***RegExp:

    2. Math

    3. ***Date

    1. ***RegExp

       API:

         验证: 检查字符串是否完全符合正则表达式的要求!

          如何: var bool=reg.test(待检测字符串)

             强调: 只要验证,reg中必须前加^后加$

        

         查找关键词: 第四种情况: 即找内容,又找位置

          如何: var arr=reg.exec(待查找的完整字符串)

                  在"待查找的完整字符串"中,依次查找每个符合reg要求得关键词。

              返回值: 本次找到的一个关键词及其位置

                 arr[0]: 关键词内容

                    如果正则中有分组

                    arr[n]: 自动保存第n个分组匹配的子内容

                 arr["index"]: 当前关键词位置 -> 可简写为arr.index

                 如果没找到,返回null

              每次查找后,都将reg.lastIndex属性(下次开始位置)修改为当前index+关键词长度,相当跳过当前关键词继续向后找

      

          固定套路: 找所有关键词:

             while((arr=reg.exec(str))!=null){

                  arr[0] 关键词内容

                     arr[n]  自动获得第n个分组的子内容

                  arr.index 当前关键词位置

             }

             如果只需要分组的子字符串,不需要完整关键词:

                可省略arr,用RegExp.$n

             while(reg.exec(str)!=null){

                   RegExp.$n   自动获得第n个分组的子内容

             }

          练习:

           贪婪模式: 正则表达式默认匹配最长的符合条件的子字符串

                  默认使用贪婪模式

                  .*    .+

           懒惰模式: 仅匹配最短的符合条件的子字符串

              贪婪->懒惰:  .*?   .+?

    2. Math:

       什么是: 专门封装数学计算所用常量,并提供数学计算所用API

       何时: 只要数学计算时

       特点: 不能new!

       API:

         1. 取整:

             Math.ceil(num) 上取整: 只要超过,就取下一个整数

             Math.floor(num) 下取整: 省略小数部分

             Math.round(num) 四舍五入取整:

             vs toFixed(d):

               1. 小数位数: Math.round()只能取整,不能规定小数位数

                                        toFixed(d)可取整,也可规定小数位数

               2. 返回值: Math.round()返回number

                               toFixed(d)返回string

             自定义round函数:

        2. 乘方和开平方:

          乘方: Math.pow(底数, 幂)

          开平方: Math.sqrt(n)

        3. 最大值和最小值:

          Math.max(值1,值2,...);

          Math.min(值1,值2,...);

            问题: 不支持数组

            解决: Math.max.apply(null,arr)

        4. 随机数:

            Math.random()  0<=r<1 随机小数

            从min~max之间取随机整数:

            Math.floor(Math.random()*(max-min+1)+min)

            从0~n之间去随机:

            Math.floor(Math.random()*(n+1));

    3. ***Date

       什么是: 封装一个时间,提供操作时间的API

       何时: 只要存储时间,都要用Date对象

       如何:

          创建: 4种:

          1. 创建日期对象,并自动获得当前客户端系统时间

             var now=new Date();

          2. 创建日期对象,并封装自定义时间:   

             var date=new Date("yyyy/MM/dd hh:mm:ss");

             var date=new Date(yyyy,MM-1,dd,hh,mm,ss)

          3. 复制一个日期对象:

             问题: 日期对象的计算都是直接修改原日期对象

                          计算后无法保留计算前的旧时间

             解决: 今后如果需要同时保留开始和结束时间时

                         都要先将开始时间复制一个副本,再用副本计算

             var date1=new Date(...);

             var date2=new Date(date1);

          4. 用毫秒数创建日期对象:

             Date对象的原理:

                Date对象中保存了一个巨大的毫秒数

                   起始时间为: 1970年1月1日0点至今的毫秒数

             var date=new Date(ms);

             两个日期对象可相减: 得到毫秒差

           

  • 相关阅读:
    L99
    L98
    L97
    PyQt(Python+Qt)学习随笔:model/view架构中的QStandardItemModel使用案例
    PyQt(Python+Qt)学习随笔:model/view架构中的两个标准模型QStandardItemModel和QFileSystemModel
    PyQt(Python+Qt)学习随笔:Model/View架构中的Model模型概念
    PyQt(Python+Qt)学习随笔:Model/View架构概述
    第十四章、Model/View开发:Model/View架构程序设计模式
    Python中数字按位取反的方法
    PyQt(Python+Qt)学习随笔:Model中项的标记flags取值及枚举类型Qt.ItemFlag
  • 原文地址:https://www.cnblogs.com/Hale-Proh/p/7199638.html
Copyright © 2020-2023  润新知