正課:
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}