• JS 8


    1. ***String

       什么是:

    ***内置对象:

    ***包装类型:

       字符串API

    1. 什么是: 多个字符组成的只读字符数组

          vs 数组: 下标i

                       length

                       slice()  concat

          不同: 数组中凡是直接修改原数组的API,字符串都不能用!

    2. 内置对象: ES标准中规定的,浏览器厂商已经实现的现成的对象和API

        11个: Number  String  Boolean

                  Array Date RegExp Math

                  Error

                  Function  Object

                  Global(浏览器中被替换为window)

    3. 包装类型对象:

        什么是: 专门封装基础类型的值,并提供操作基础类型值的API的对象

        为什么: 基础类型的值,本身不包含任何API功能

        何时: 只要试图对基础类型的值调用API时,都会自动创建对应类型的包装类型对象来封装基础类型的值。

        调用后: 包装类型对象,自动释放!

           比如: var n=345.678;

                    n.toFixed(2)=>345.678.toFixed(2)

                                        =>new Number(345.678).toFixed(2)

    4. String的API:

    ***所有字符串API都无权修改原字符串,只能返回新字符串!

       大小写转换: 将字符串中所有英文字母转为统一的大小写

          何时: 只要不区分大小写时,都要先转为一致的大小写,再判断。 比如: 用户名,邮箱地址,验证码

          如何: str.toUpperCase() //都转大写

                   str.toLowerCase() //都转小写

       获得指定位置的字符: str[i]

           var char=str.charAt(i);

           获得指定字符的unicode号:

           var unicode=str.charCodeAt(i); //省略i,默认是0

               将unicode号反向转回文字

               var char=String.fromCharCode(unicode);

        选取子字符串: str.slice(starti,endi+1)

           str.substring(starti,endi+1) 不支持负数参数

           str.substr(starti,n): 选取starti开始的n个元素

    1. ***String API

       查找关键词

       替换

       切割字符串

    2. *****正则表达式

    1. 查找关键词: 4种

       1. 查找一个固定的关键词出现的位置:

           var i=str.indexOf("关键词",fromi)

             在str中,从fromi位置开始查找"关键词"的位置

             如果找到,返回关键词所在位置的下标

                    找不到,返回-1

             简写: 省略fromi,默认从0开始

           专门找最后一个关键词的位置:

           var i=str.lastIndexOf("关键词")

             在str中,找最后一个关键词出现的位置

          问题: 只能找第一个关键词

          解决: 正则表达式:

       2. 使用正则表达式查找指定的一类关键词的位置:

           按模式匹配:

           var i=str.search(/正则表达式/);

               在str中查找第一个符合正则表达式要求的关键词的位置

               返回值: 找到的关键词的下标, 如果找不到返回-1

           何时: 仅判断是否包含敏感词时,就用search

                    如果返回不是-1,说明包含,否则说明没找到

           忽略大小写: /正则/i

           问题: 1. 只能获得第一个的位置,不能获得所有敏感词

                    2. 只能返回位置,不能返回内容

        3. 使用正则表达式查找指定的一类关键词的内容:

            var arr=str.match(/正则/ig);

            默认只找第一个,找所有,必须加g

            返回值: 所有敏感词组成的数组

                   没找到返回null!

               强调: 如果一个API有可能返回null,就必须先判断不是null,再使用!

            arr.length 表示找到的关键词个数

            问题: 仅返回所有关键词的内容,无法返回每个关键词位置

        4. 即找所有关键词内容,又找每个关键词的位置?

            reg.exec();

    2. 替换: 将字符串中所有敏感词替换为新内容

        基本替换:

        str=str.replace(/正则/ig,“替换值”);

       

    4. *****正则表达式:

       什么是: 专门定义一类字符串统一规则的表达式

       何时: 1. 按照指定规则模糊查找一类关键词时

                2. 表单中验证输入项的格式

       如何: 语法:  

          1. 最简单的正则其实就是关键词原文

          2. 字符集: 规定字符串中一位字符可用的备选字符列表

             何时: 只要某一位字符,有多个备选字时

             如何: [备选字符列表]

               强调: 一个字符集只能匹配一位字符

               简写: 如果备选字符列表是连续的,就可用-省略中间字符

                  一位字母: [a-zA-Z]

                  一位数字: [0-9]

                  一位汉字: [u4e00-u9fa5]

             特殊: 除了: [^排除的字符列表]

                        强调: ^必须写在[开头]

         3. 预定义字符集: 4个:

              w  一位字母数字或_  =>[a-zA-Z0-9_]

              d  一位数字  => [0-9]

              s  一位空字符: 空格,Tab,...

              .    一位任意字符

            强调: 一个预定义字符集仅匹配一位字符

                     只有规则和预定义字符完全一致时,才能使用

                          如果不一致, 依然需要手写普通字符集

             字符集仅控制每个字符的内容

         4. 量词: 专门固定字符出现的次数

             有明确数量边界:

               字符集{min,max}   规定字符集必须最少出现min次

                                                                     最多max次

               字符集{min,}   最少min次, 多了不限

               字符集{n}        必须n次

             没有明确数量边界:

               字符集?     可有可无,最多一次

               字符集*     可有可无,多了不限

               字符集+    {1,}

             强调: 仅修改相邻的前一个字符集

         5. 选择和分组:

             分组: 将多个字符集分成一组:

                 何时: 如果希望一个量词同时修饰多个字符集时

                比如: 我(了个?)?去: 我去   我了去   我了个去    我个去X

             regexper.com

             选择: 其实就是"或"   规则1|规则2

                只要匹配任意一个规则即可

                (微|w(ei)?)s*(信|x(in)?)

          

         手机号:

             (+86|0086)?      +86或0086  可有可无,最多一次

             s*                        空字符 可有可无,多了不限

             1

             [34578]               34578中挑一个

             d{9}                    9位数字

             (+86|0086)?s*1[34578]d{9}

         邮箱:

             字母/数字或_   一次以上

             @

             字母或数字      2位以上

             (.和 字母或数字      2到3位)   1到2次

             w+@[a-zA-Z0-9]{2,}(.[a-zA-Z0-9]{2,3}){1,2}

            

  • 相关阅读:
    2018年奇虎360春招笔试题--玫瑰花
    MaxPooling的作用
    网易笔试编程题:被3整除
    网易笔试编程题:牛牛找工作
    剑指offer 第十二天
    算法题:合并N个长度为L的有序数组为一个有序数组(JAVA实现)
    十分钟看懂神经网络反向传输算法
    十大经典排序算法最强总结(含JAVA代码实现)
    记服务器中招挖矿病毒排查过程(解决方案篇)
    spring 事件监听同时支持同步事件及异步事件
  • 原文地址:https://www.cnblogs.com/Hale-Proh/p/7199630.html
Copyright © 2020-2023  润新知