一、String類型中的正則函數:
1. 查找敏感詞: 4種:
(1)查找一個固定的敏感詞出現的位置:
var i=str.indexOf("敏感詞")
(2)用正則模糊查找一個敏感詞的位置:
var i=str.search(/正則/i)
(3)要查找敏感詞的内容: 2種:
①隻查找第一個敏感詞的内容和位置
var arr=str.match(/正則/i)
arr: [ "0": "我草", "index": 9 ]
問題: 隻能找一個敏感詞!
②查找字元串中所有符合條件的敏感詞的内容:
var arr=str.match(/正則/ig) global
arr: [ "我艹", "我槽" ].length = 2
0 1
強調: 隻包含關鍵詞的内容,不再包含關鍵詞的位置
如果找不到,傳回null
強調: 如果一個函數可能傳回null,就應該先驗證傳回值不是null,再使用!
(4)查找所有關鍵詞的内容和位置:
reg.exec()
2. 替換: 2種:
(1)簡單替換: 将所有關鍵詞都替換為一緻的新值
str=str.replace(/正則/ig, “新值”);
将str中所有符合正則要求的關鍵詞都替換為指定的"新值"
強調: 所有字元串都是不可變類型, 所有字元串的函數都無權直接修改原字元串,隻能傳回新字元串
是以,如果想獲得新字元串,必須自己用變量接一下。
比如: str=str.replace(/小[\u4e00-\u9fa5]/,"**")
//将str中 所有 小字開頭的人名 都 替換成 **,并将替換後的結果,手動儲存回原變量中。
(2)進階替換: 根據搜到的不同敏感詞替換成不同的新值
比如: 鄙視題: 将每個單詞首字母改為大寫!
//找到每個單詞首字母: /\b[a-z]/g
//用replace将字元串中的所有首字母,替換為其對應的大寫字母:
str="you can you up";
str=str.replace(//2個實參
/\b[a-z]/g, //第一個實參是要查找字元的正規表達式
//第二個實參是一個沒有名字的函數
//每找到一個敏感詞,就自動調用一次
//每次調用時都自動傳入本次找到的敏感詞給kword,比如: 本次找到“y”,那麼kword=“y”
function(kword){
//1. 必須有一個形參
//2.根據kword接到的值不同,傳回不同新的替換值
return y.toUpperCase() -> Y
//return出的新值,會被自動替換到目前找到的敏感詞位置。
}
)
衍生: 删除關鍵詞: 其實就是替換為空字元串
str=str.replace(/正則/ig, “”);
作業: 鄙視: 删除字元串開頭和結尾的空字元
3. 切割:将一個字元串按指定的分隔符,切割為多段子字元串
2種:
(1)分隔符是固定的:
var arr=str.split("分隔符")
将str按指定的分隔符切割為多段子字元串,儲存在一個字元串數組中。
比如: var email="[email protected]";
//将email按中間的@切割
var arr=email.split("@");
//["zhangdong","tedu.cn"]
// 0 1
var uname=arr[0];
var domain=arr[1];
(2)分隔符不确定,但有規律:
var arr=str.split(/正則/i)
比如: //再按</li>空字元<li>切割
var arr=html.split(/<\/li>\s*<li>/i);