一、概念正则表达式
正则表达式的做用:匹配特殊字符或有特殊搭配原则的字符的最佳选择函数
二、建立方式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"]