正則的細節
1.正則:檢驗字串的規則
2.正則就是有元字元和修飾符構成:(寫在//裡面的都叫元字元)
元字元分兩種:
1種是有特殊意義的 例如:/\d/表示數字
2種沒特殊意義 沒有特殊意義就是字元本身
3.特殊意義的元字元
1.\ 轉義字元 轉義後面緊跟的字元的意義
2. \d 有意義(數字) \.無意義(是什麼就是什麼)
3. . 代表除了\n以外的任何單個字元
4.^以什麼什麼開頭,^讀音:kongchu
5.$ 以什麼結束, \$就是$本身,n$就是包含$的結尾;
6.| 代表或的意思;
4.帶有量詞意思的元字元:
1.? 代表0到1個;
*代表0到多個;
+代表1到多個
{}系列
5.[]系列元字元;
[xyz] 代表x或y或z中的任意一個
[0-9] 代表0到9之間的任意一個
[a-z] 代表小寫a到小寫z
[A-Z] 代表大寫A到大寫Z
[A-z] 代表大寫A到小寫z(不區分大小寫)
6.()分組系列:
(x|y) x或y中的其中一個;
正則的細節:(正則定義的區別)
var reg=/hello/g (/hello/)代表元字元 不可以用字串拼接
字面量定義
var reg=new RegExp("hello","g") ("hello" 代表字串,可以通過字串拼接)
物件例項定義
3. /./和/\./的區別?
. 任意字元
\.就是一個點
4[.],[+]的意思
.和+在正則裡面是特殊的元字元;
. 是任意字元 +是 量詞代表多個
在[.]和[+]就是這個字元本身沒有意義;
5. |代表或
[2|3]代表2或3;
[12|34]代表1或2|3或4,或者12或者34
往往這種情況需要分組() (^(12)|(34)$)
6. -的問題:
/-/就是本身沒有意義
如果[0-9]代表 0到9之間的任意一個數字;
正則的案例:
1.寫一個12到65週歲的正則:
var reg=/^(1[2-9])|(2-5[0-9])|(6[0-5])/
var st="13"
console.log(reg.test(st))
2.寫一個正常數字的正則;
var reg=/^[+-]?([0-9]|[1-9]\d+)(\.\d+)?$/
var st="-20.13"
console.log(reg.test(st))
3.寫一個郵箱驗證
var reg=/^[a-zA-Z](\w|-){5,17}@((136|126).com)|(yeah.net))$/
var st="[email protected]"
console.log(reg.test(st))
總結:正則每寫完一部分就用()包起來 -不是特殊符
使用定時器的地方先清定時器,防止定時器疊加