正則的細節

2022-08-09 14:15:19 字數 1576 閱讀 9606

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|-)@((136|126).com)|(yeah.net))$/

var st="[email protected]"

console.log(reg.test(st))

總結:正則每寫完一部分就用()包起來     -不是特殊符

使用定時器的地方先清定時器,防止定時器疊加

正則細節要點

1.作為子模式使用 reg 3 abc t string 333abct if preg match reg,string,arr 結果是 array 0 333abct 1 abc 2 t 2.反向引用 取出子模式 再作為正規表示式的一部分 如果是preg replace 可以將子模式取出 在被替...

正則捕獲的細節及replace分析

1.var reg 與var reg 的區別?前者代表任意乙個字元,後者代表這個字串中得有乙個點 2.的使用 如果單獨的乙個字元後面帶?代表1個或0個這個字元的出現 列如 d?如果量詞 後面帶?取消正則的貪婪性 在捕獲的階段 3.捕獲 1.普通捕獲 正則的方法exec 字串的方法match 普通捕獲...

正規表示式細節

在正規表示式裡面表示可選擇有兩種表示式 1 ab ccc 匹配accc 或者bccc 2 a b ccc 匹配accc 或者bccc 另外 兩者之間沒有什麼區別 true false 說明捕獲組中記憶體中儲存的是捕獲的匹配內容,而不是捕獲的正規表示式片段 但是我們很快發現,在 只能匹配單個字元,如 ...