字符串

正課: 

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}

         




























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章