正則表達式
1.規定一個字符串中字符出現的規律的表達式
可以用正則表達式制定一種規則,並模糊匹配關鍵詞
2字符集:規定字符串中某一位字符也稱備選字符列表
語法[備選字符列表]
每個字符集只能匹配一個字符,且每個字符集中至少匹配一次
Eg:[微wv][信x]
可以匹配到的內容:微信 微x w信 wx v信 vx;
2.1字符集簡寫:當備選字符集較多且連續時,可以使用簡寫:
一位數字:[0123456789] ==>[0-9]
一位小寫字母:[a-z]
一位大寫字母:[A-z]
一位字母:[a-zA-Z]
一位漢字:[\u4e00-\u9fa5]
2.2預定義字符集:
\w 一位字母或者[0-9a-zA-Z]
\d 一位數字[0-9]
\s 一位空字符 一切看不見的字符:空格,TAB,回車.
. 一位任意字符
3.量詞;用於規定字符集出現的規則,放置於字符集后面.
3.1 有明確邊界的量詞
字符集{min,max}規定字符集出現的最少次數min,和最多次數max
字符集{min,}規定字符集出現的最少次數min
字符集{n}規定字符集必須出現n次
3.2沒有明確邊界的量詞
字符集?可有可無。最多出現一次
字符集* 可有可無 出現次數不限
字符集+ 至少出現一次,多了也不設限
4.選擇和分組
選擇;或”|” 條件滿足任何一個規則即可
分組:(字符集){}將多個字符集組成組
5.指定位置
^ 字符串開頭
例^\d 表示開頭的必須是一位數字
$ 字符串結尾
例\d$ 表示結尾必須是一位數字
\b 單詞邊界
例子\bno\b 匹配no這個單詞,no的前后可以用標點或者空格以及其他字符隔開
應用
檢索關鍵詞
- 查找一個固定的關鍵詞出現的位置 只找第一次出現的位置
語法:var i = str.indexOf(關鍵詞,fromi);差找第一次出現的位置,省略第二個參數就是默認從0開始找
返回值:找到返回關鍵詞下標,未找到返回-1
Var str = “work hard ”
0123456789
var i = str.indexOf(“hard”);
str = "no zuo no die No can no bibi";
//循環變量
var i = -1;
// 反復:通過給變i的值,查找str中包含no關鍵詞的位置
while((i=str.indexOf("no",i+1))!=-1){
console.log('在位置'+i+"發現敏感詞");
}
// var i = str.lastIndexOf("關鍵詞",fromi) 用法和indexOf相同,但是從后往前查找
console.log(str.lastIndexOf("no"));
2.判斷字符串中是否包含了符合規范的敏感詞
語法:var i = str.search(/正則表達式/);
返回值:找到返回關鍵詞下標,未找到返回-1
eg:
3.使用正則表達式查找指定一類關鍵詞的內容
語法:var arr = str.match(/正則表達式/ig)
返回值:關鍵詞內容,未找到返回null
目的是用來查找符合正則表達式的關鍵詞並將之作為返回值保存在一個數組中
默認找到第一個就結束,可以在后面加g,i表示不區分大小寫
4.既找到所有關鍵詞的內容又找到每個關鍵詞的位置
驗證字符串是否符合正則表達式要求
語法: var arr = reg.exec(待檢測的字符串)
返回值:本次找到的一個關鍵詞及其位置,若為找打,返回null
arr [0]:關鍵詞的內容
如果正則表達式中有分組
arr [n]:返回值為正則中第n個分組匹配的內容
arr[“index”]:當前關鍵詞的位置,可以簡寫為arr.index
字符串切割
切割:將元字符串,按照正則表達式指定的規則切割成多個字符串
語法:var substrs = str.split(/正則/);
返回值:切割后的多個子字符串組成的數組,結果中不再包含分隔符。