天天看點

2019web前端學習筆記——js進階(2)一、String類型中的正則函數:

一、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);
           

繼續閱讀