n+ 代表匹配多个或1个符合n的字符
- +有些类似g全局匹配,但不同的是会将连续符合规则的字符连接在一起。
- 正则具有两个特性:
- 不回头:匹配过的字符,不会再匹配
- 贪婪模式:能匹配多则不匹配少(针对量词+才有贪婪?)
var str = 'abc'
var reg = /\w+/g
str.match(reg) // ["abc"]
var reg1 = /\w/g
str.match(reg) // ["a", "b", "c"]
var reg2 = /\w+/
str.match(reg) // ["abc"]
var str = 'a+bc'
var reg = /\w+/g
str.match(reg) // ["a", "bc"]
var str = 'a+bc'
var reg = /\w+/
str.match(reg) // ["a"]
n* 代表匹配多个或0个符合n的字符
var str = "abc"
var reg = /\w*/
str.match(reg) // ["abc"]
var str = "abc"
var reg = /\w*/g
str.match(reg) // ["abc", ""]
var str = "abc+-"
var reg = /\w*/g
str.match(reg) // ["abc", "", "", ""] // 第一个"" 为匹配+的结果,第二个""为匹配-的结果,第三个""为匹配的最后一位
n? 代表匹配1个或0个符合n的字符
"ab".match(/\w?/g) // ["a", "b", ""]
{x,y} 代表区间,从x到y个
- x需小于y
- 如果不写y,{x,}代表x到正无穷
- 如果不写, {x}代表个数为x个
"abc".match(/\w{1,2}/g) // ["ab", "c"]
^n代表匹配以n开头的字符
// 匹配出以字母开头后面是数字的字符
"a1bc".match(/^\w\d/g) // [ "a1" ]
n$代表匹配以n结尾的字符
// 匹配出以字母结尾前面是数字的字符
"a1a1c".match(/\d\w$/g) // [ "1c" ]
x(?=y) 代表匹配x后面是y的字符,最终将x匹配出来
- x(?!y)代表匹配x后面不是y的字符,最终将x匹配出来
"ab234ab".match(/a(?=b)/g) // ["a", "a"]
总结
- n{1,} === n+
- n{0,} === n*
- n{0,1} === n?
parctice
"ab564DFab".match(/^ab[\w\W]*ab$/g) // ["ab564DFab"]
"ab564DFab".match(/^ab.*ab$/g) // ["ab564DFab"]
"4ab564DFab".match(/(^ab.*)|(.*ab$)/g) // ["4ab564DFab"]
/^138\d{8}$/.test("13812345678") //true