正則相關的知識分享
正則:
概念:描述或匹配一系列符合某種規則的字串
作用:資料驗證 內容檢索 內容替換 內容過濾
//建立正則物件
//通過例項化物件
letreg=newRegExp("正則表示式"+變數,"模式修正符")
模式修正符:g:global全域性(下一次執行從上一次之後位置) i:不區分大小寫m:可以換行
//通過字面量的方式
letreg=/ 正則表示式 /模式修正符
/為定界符正則物件的常用方法:
reg.test(str) 檢測正則物件是否能夠匹配str 返回true false
reg.exec(str) 檢測正則物件是否能夠匹配str 如果能匹配返回一個擁有特殊屬性的陣列,如果不能匹配返回null
正則表示式:
使用場景:1.正則物件 2.str.split(正則物件) 3.str.replace(正則物件,被替換的內容) 4.str.search(正則物件)
原子:正則表示式中最小的內容
\d 0-9
\w 數字字母下劃線
\s 空白,\n,\r,\t
\D 除了0-9以外的字元
\W 除了數字字母下劃線以外的字元
\S 除了空白,\n,\r,\t
原子表:[ ]
letreg=/[a-z]/g匹配小寫字母
letreg=/[a-zA-Z]/g匹配所有字母
元字元:
. 所有的字元
| 或
原子組:() 原子組的內容會預設儲存在記憶體中,在後面如果一模一樣可以\1呼叫
letreg=/(山|陝)西/g
letreg=/<div>box<\/div>/===letreg=/<(div)>box<\/\1>/ // \為轉譯字元
(?:xxx)不將xxx儲存到記憶體中,並且不可呼叫
正則中的數量:
*:0個或多個
letreg=/\d*/g
+:1個或多個
?:0個或1個
{11}:11個 {15,18}:15到18個 {6,}六個或六個以上個
貪婪吝嗇: *? 加問號將盡可能取多變成儘可能少取
邊界判斷:
^開始 $結束
letreg=/^\d{7}$/
\b 單詞邊界
\B 非單詞邊界
模式修正符:
g全域性
i不區分大小寫
m換行,多行
舉例:
//正則漢字字母數字下劃線返回bool
function isNotEmpty(str) {
var regex =newRegExp("^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z]|[0-9]|[_]){1,10}$");
return regex.test(str);
}