正則正則表示式,又名 “規則表示式”由我們自己來書寫 “規則”,專門用來檢測 字串 是否符合 “規則” 使用的我們使用一些特殊的字元或者符號定義一個 “規則公式”,然後用我們定義好的 “規則公式” 去檢測字串是不是合格
var reg = /\d+/var str1 = '123'var str2 = 'abc'console.log(reg.test(str1)) // trueconsole.log(reg.test(str2)) // false
上面的變數 reg 就是定製好的規則檢測 str1 這個字串的時候,符合規則檢測 str2 這個字串的時候,不符合規則建立一個正則表示式想制定 “規則”,必須要按照人家要求的方式來制定把一些字母和符號寫在 // 中間的東西,叫做正則表示式,比如 /abcdefg/建立正則表示式有兩個方式 字面量 和 建構函式建立字面量建立// 下面就是字面量建立一個正則表示式var reg = /abcdefg/
這個正則表示式就可以去檢測字串了建構函式建立
// 下面就是建構函式建立一個正則表示式var reg = new RegExp('abcdefg')console.log(reg) // /abcdefg/
使用建構函式方式建立的和字面量建立的,得到的結果一樣正則表示式裡面的符號知道了怎麼建立一個正則表示式以後,我們就來詳細的說一下正則表示式裡面涉及到的一些符號了元字元. : 匹配非換行的任意字元\ : 轉譯符號,把有意義的 符號 轉換成沒有意義的 字元,把沒有意義的 字元 轉換成有意義的 符號\s : 匹配空白字元(空格/製表符/...)\S : 匹配非空白字元\d : 匹配數字\D : 匹配非數字\w : 匹配數字字母下劃線\W : 匹配非數字字母下劃線有了元字元我們就可以簡單的制定一些規則了
var reg = /\s/var str = 'a b'var str2 = 'ab'console.log(reg.test(str)) // trueconsole.log(reg.test(str2)) // falsevar reg = /\d/var str = 'abc1'var str2 = 'abc'console.log(reg.test(str)) // trueconsole.log(reg.test(str2)) // falsevar reg = /\w/var str = 'a1'var str2 = '#@$'console.log(reg.test(str)) // trueconsole.log(reg.test(str2)) // false
限定符* : 前一個內容重複至少 0 次,也就是可以出現 0 ~ 正無窮 次+ : 前一個內容重複至少 1 次,也就是可以出現 1 ~ 正無窮 次? : 前一個內容重複 0 或者 1 次,也就是可以出現 0 ~ 1 次{n} : 前一個內容重複 n 次,也就是必須出現 n 次{n,} : 前一個內容至少出現 n 次,也就是出現 n ~ 正無窮 次{n,m} : 前一個內容至少出現 n 次至多出現 m 次,也就是出現 n ~ m 次限定符是配合元字元使用的// 下面正則表示驗證數字出現 0 ~ 正無窮次都可以var reg = /\d*/var str = 'abc'var str2 = 'abc1'var str3 = 'abc123'console.log(reg.test(str)) // trueconsole.log(reg.test(str2)) // trueconsole.log(reg.test(str3)) // true// 下面正則表示驗證數字出現 1 ~ 正無窮次都可以var reg = /\d+/var str = 'abc'var str2 = 'abc1'var str3 = 'abc123'console.log(reg.test(str)) // falseconsole.log(reg.test(str2)) // trueconsole.log(reg.test(str3)) // true// 下面正則表示驗證數字出現 0 ~ 1 次都可以var reg = /\d?/var str = 'abc'var str2 = 'abc1'console.log(reg.test(str)) // trueconsole.log(reg.test(str2)) // true// 下面正則表示驗證數字必須出現 3 次var reg = /\d{3}/var str = 'abc'var str2 = 'abc1'var str3 = 'abc123'console.log(reg.test(str)) // falseconsole.log(reg.test(str2)) // falseconsole.log(reg.test(str3)) // true// 下面正則表示驗證數字出現 3 ~ 正無窮次var reg = /\d{3,}/var str = 'abc'var str2 = 'abc1'var str3 = 'abc123'var str4 = 'abcd1234567'console.log(reg.test(str)) // falseconsole.log(reg.test(str2)) // falseconsole.log(reg.test(str3)) // trueconsole.log(reg.test(str4)) // true// 下面正則表示驗證數字只能出現 3 ~ 5 次var reg = /\d{3,5}/var str = 'abc'var str2 = 'abc1'var str3 = 'abc123'var str4 = 'abc12345'console.log(reg.test(str)) // falseconsole.log(reg.test(str2)) // falseconsole.log(reg.test(str3)) // trueconsole.log(reg.test(str4)) // true
邊界符^ : 表示開頭$ : 表示結尾邊界符是限定字串的開始和結束的// 下面表示從開頭到結尾只能有數字,並且出現 3 ~ 5 次var reg = /^\d{3,5}$/var str = 'abc'var str2 = 'abc123'var str3 = '1'var str4 = '1234567'var str5 = '123'var str6 = '12345'console.log(reg.test(str)) // falseconsole.log(reg.test(str2)) // falseconsole.log(reg.test(str3)) // falseconsole.log(reg.test(str4)) // falseconsole.log(reg.test(str5)) // trueconsole.log(reg.test(str6)) // true
特殊符號() : 限定一組元素[] : 字元集合,表示寫在 [] 裡面的任意一個都行[^] : 反字元集合,表示寫在 [^] 裡面之外的任意一個都行- : 範圍,比如 a-z 表示從字母 a 到字母 z 都可以| : 或,正則裡面的或 a|b 表示字母 a 或者 b 都可以現在我們就可以把若干符號組合在一起使用了
// 下面是一個簡單的郵箱驗證// 非_$開頭,任意字元出現至少6次,一個@符號,(163|126|qq|sina)中的任意一個,一個點,(com|cn|net)中的任意一個var reg = /^[^_$].{6,}@(163|126|qq|sina)\.(com|cn|net)$/
標示符i : 表示忽略大小寫這個 i 是寫在正則的最後面的/\w/i就是在正則匹配的時候不去區分大小寫g : 表示全域性匹配這個 g 是寫在正則的最後面的/\w/g就是全域性匹配字母數字下劃線正則表示式的方法正則提供了一些方法給我們使用用來檢測和捕獲字串中的內容的testtest 是用來檢測字串是否符合我們正則的標準語法: 正則.test(字串)返回值: booleanconsole.log(/\d+/.test('123')) // trueconsole.log(/\d+/.test('abc')) // false
execexec 是把字串中符合條件的內容捕獲出來語法: 正則.exec(字串)返回值: 把字串中符合正則要求的第一項以及一些其他資訊,以陣列的形式返回
var reg = /\d{3}/var str = 'hello123world456你好789'var res = reg.exec(str)console.log(res)/* ["123", index: 5, input: "hello123world456你好789", groups: undefined] 0: "123" groups: undefined index: 5 input: "hello123world456你好789" length: 1 __proto__: Array(0)*/
陣列第 0 項就是匹配到的字串內容index 屬性表示從字串的索引幾開始是匹配的到字串字串的方法字串中有一些方法也是可以和正則一起使用的searchsearch 是查詢字串中是否有滿足正則條件的內容語法: 字串.search(正則)返回值 : 有的話返回開始索引,沒有返回 -1var reg = /\d{3}/var str = 'hello123'var str2 = 'hello'console.log(str.search(reg)) // 5console.log(str2.search(reg)) // -1
matchmatch 找到字串中符合正則條件的內容返回語法: 字串.match(正則)返回值 :沒有標示符 g 的時候,是和 exec 方法一樣有標示符 g 的時候,是返回一個數組,裡面是匹配到的每一項
var reg = /\d{3}/var str = 'hello123world456'var str2 = 'hello'console.log(str.match(reg)) // ["123", index: 5, input: "hello123wor456", groups: undefined]console.log(str2.match(reg)) // nullvar reg = /\d{3}/gvar str = 'hello123world456'var str2 = 'hello'console.log(str.match(reg)) // ["123", "456"]console.log(str2.match(reg)) // null
replacereplace 是將字串中滿足正則條件的字串替換掉語法: 字串.replace(正則,要替換的字串)返回值 : 替換後的字串var reg = /\d{3}/var str = 'hello123world456'var str2 = 'hello'console.log(str.replace(reg)) // hello666world456console.log(str2.replace(reg)) // hellovar reg = /\d{3}/gvar str = 'hello123world456'var str2 = 'hello'console.log(str.replace(reg)) // hello666world666console.log(str2.replace(reg)) // hello
最新評論