一、概念正則表達式
正則表達式的做用:匹配特殊字符或有特殊搭配原則的字符的最佳選擇函數
二、建立方式spa
(1)字面量3d
var reg = /cd/索引
var reg = /cd/igm字符串
var str = "abcdefg"it
reg.test(str) // trueio
(2)構造函數ast
var reg = new RegExp("abc")function
var reg = new RegExp("abc", "igm")
var str = "abcdef"
reg.test(str) // true
三、修飾符
(1)i
忽略大小寫匹配
(2)g
全局匹配
(3)m
多方匹配
四、正則方法
reg.test( str )
str.match( reg )
五、表達式
(1)[ ab ]
每一個表達式表明一位,表示匹配a或者b
[0123456789]:表示匹配0-9範圍內的數
[0-9]:表示匹配0-9範圍內的數
[0-9A-z]:表示匹配0-九、A-Z、a-z範圍內的值
實例1:
var reg = /[0123456789][0123456789][0123456789]/g
var str = "3245fdk4590dfkl823567dfjhk"
str.match(reg) // ["324", "459", "823", "567"]
實例2:
var reg = / [ab][cd][d]/g
var str = "abcd"
str.match(reg) // ["bcd"]
(2)[ ^ab ]
表示不能匹配a和b,其它均可以匹配
實例1:
var reg = /[^ab]/g
var str = "acde"
str.match(reg) // ["c", "d", "e"]
實例2:
var reg = /[^ab][^ab]/g
var str = "acde"
str.match(reg) // ["cd"]
(3)( )
實例1:
var reg = /(abc | bcd)/g
var str = "abcdefbcdf"
str.match(reg) // ["abc", "bcd"]
實例2:
var reg = /(abc | bcd)[0-9]/g
var str = "bcd53dfs"
str.match(reg) // ["bcd5"]
六、元字符
(1)\w
\w表示區間是[0-9A-z_]
實例1:
var reg = /\wab5/
var str = "tyab5"
str.match(reg) // ["yab5"]
(2)\W
表示[^\w]
實例2:
var reg = /\Wab5/
var str = "t*ab5"
str.match(reg) // ["*ab5"]
(3)\d
表示[0-9]
(4)\D
表示[^0-9]
(5)\s
匹配空白字符
表示[\t\n\r\v\f ]
(6)\S
表示[^\s]
(7)\b
表示單詞邊界
var reg = /\bcde/g
var str = "abc cde fcdeh"
str.match(reg) // ["cde"]
(8)\B
表示非單詞邊界
七、量詞
(1)n+
表示n能夠出現1次或屢次
(2)n*
表示n能夠出現0次或屢次
實例1:
var reg = /\w+/g
var str = "abc"
str.match(reg) // ["abc"]
(3)n?
表示n能夠出現0次或1次
實例1:
var reg = /\w?/g
var str = "aaa"
str.match(reg) // ["a", "a", "a", ""]
(4)n{x}
表示一次匹配x個n
實例1:
var reg = /\w{3}/g
var str = "abcedfg"
str.match(reg) // ["abc", "edf"]
(5)n{x, y}
表示一次匹配y個n,後面不夠的最少能夠匹配x個n
y值能夠不寫,表示x到正無窮
實例1:
var reg = /\w{3,5}/g
var str = "ackdeewjkttld"
str.match(reg) // ["ackde", "ewjkt", "tld"]
(6)^和$
^n:表示匹配以n開頭的
n$:表示匹配以n結束的
實例1:
var reg = /ed$/g
var str = "abedced"
str.match(reg) // ["ed"]
實例2:
var reg = /^abc$/g // 表示以同一個abc開始和結束
var str = "abcabc"
str.match(reg) // null
實例3:
var reg = /^\d[\s\S]*\d$/g
var str = "123abc123"
str.match(reg) // ["123abc123"]
八、reg.exec(str)
var reg = /ab/g
var str = "ababab"
reg.lastIndex // 0
reg.exec(str) // ["ab"]
reg.lastIndex // 2
reg.exec(str) // ["ab"]
reg.lastIndex // 4
reg.exec(str) // ["ab"]
reg.lastIndex // 6
reg.exec(str) // null
reg.lastIndex // 0
reg.exec(str) // ["ab"]
(9)反向匹配
實例1:
var str = "aaaa"
var reg = /(\w)\1\1\1/g
str.match(reg) // ["aaaa"]
實例2:
var str = "aaaabbbb"
var reg = /(\w)\1\1\1/g
str.match(reg) // ["aaaa", "bbbb"]
實例3:
var str = "aabb"
var reg = /(\w)\1\1\1/g
str.match(reg) // null
實例3:
var str = "aabb"
var reg = /(\w)\1(\w)\2/g
str.match(reg) // ["aabb"]
十、可使用正則表達式的字符串方法
(1)str.search( reg )
匹配到字符返回字符索引,匹配不到返回-1
(2)str.split(reg)
(3)str.replace(reg)
實例1:
var str = "ab"
str.replace("a", "b") // ba
實例2:
var reg = /a/
var str = "aa"
str.replace(reg, "b") // ba
實例3:將aa變成bb
var reg = /a/g
var str = "aa"
str.replace(reg, "b") // bb
實例4:將aabb變成bbaa
var str = "aabb"
var reg = /(\w)\1(\w)\2/g
str.replace(reg, "$2$2$1$1") // bbaa
等同
str.replace(reg, function($, $1, $2){
retrun $2 + $2 + $1 + $1
})
實例5:將"the-first-name"變成"theFirstName"
var reg = /-(\w)/g
var str = "the-first-name"
str.replace(reg, function($, $1){
return $1.toUpperCase( )
})
十一、正向斷言
(1)?=n
實例1:
var str = "abaaaa"
var reg = /a(?=b)/g
str.match(reg) // ["a"]
實例2:
var str = "abaaaa"
var reg = /a(?!b)/g
str.match(reg) // ["a", "a", "a", "a"]
實例3:
var str = "aaa"
var reg = /a+/g
str.match(reg) // ["aaa"]
實例4:
var str = "aaa"
var reg = /a+?/g
str.match(reg) // ["a", "a", "a"]