2-7 JS正则贪婪模式与非贪婪模式
2020-07-10
非贪婪模式 ?
`123456789`.match(/\d{3,7}?/g); // (3) ["123", "456", "789"] `123456789`.replace(/\d{3,7}?/g, `xgqfrms?`); // "xgqfrms?xgqfrms?xgqfrms?"
02:00
看视频
0
采集 0
2-10 JS对象属性
2017-03-19
RegExp.prototype.source
正则对象的源模式文本(RegExp 模式自身)。
let regex = /(\d{4}\1)-(\d{2})-(\d{2})/g;
regex.source
"(\d{4}\1)-(\d{2})-(\d{2})"
regex.ignoreCase
false
regex.multiline
false
regex.sticky
false
regex.lastIndex
0
regex.global
true
regex.flags
"g"
04:05
看视频
2
采集 3
2-11 test 和 exec方法
2017-03-19
## lastIndex bug???
http://www.imooc.com/video/12537
g
test()
lastIndex bug??? 执行多次,结果不一致!
let regex = /\w/;
let regexg = /\w/g;
regexg.test("abc");
let regexg = /\w/g;
regexg.test("abc");
true
regexg.test("abc");
true
regexg.test("abc");
true
regexg.test("abc");
false
regexg.test("abc");
true
regexg.test("abc");
true
regexg.test("abc");
true
regexg.test("abc");
false
05:31
看视频
0
采集 0
2-11 test 和 exec方法
2017-03-19
## lastIndex bug???
http://www.imooc.com/video/12537
g
test()
lastIndex bug??? 执行多次,结果不一致!
let regex = /\w/;
let regexg = /\w/g;
regexg.test("abc");
let regexg = /\w/g;
regexg.test("abc");
true
regexg.test("abc");
true
regexg.test("abc");
true
regexg.test("abc");
false
regexg.test("abc");
true
regexg.test("abc");
true
regexg.test("abc");
true
regexg.test("abc");
false
## lastIndex bug???
当前匹配结果的的最后一个字符的下一个字符位置,
首先匹配到a,a是当前匹配结果,最后一个字符仍是a,
a的位置是0,true,下一个字符位置是1,
b的位置是1,true,下一个字符位置是2,
c的位置是2,true,下一个字符位置是3,
?的位置是3,false,下一个字符位置是0,
02:48
看视频
0
采集 0
2-12 字符串对象方法
2017-03-19
2-12 字符串对象方法
2017-03-19
`a1b2c3d4e5f6g7`.replace(/\d/g, (match, index, origin)=>{
console.log(index);
return parseInt(match) + 1;
});
10:54
看视频
0
采集 0
2-12 字符串对象方法
2017-03-19
`a1b2c3d4e5f6g7`.split(/\d/g);
["a", "b", "c", "d", "e", "f", "g", ""]
`a1b2c3d4e5f6g7`.split(/[^\d]/g);
["", "1", "2", "3", "4", "5", "6", "7"]
"a,b,c,d,e,f,g,1,2,3,4,5,6,7".split(",");
"a,b,c,d,e,f,g,1,2,3,4,5,6,7".split(",");
["a", "b", "c", "d", "e", "f", "g", "1", "2", "3", "4", "5", "6", "7"]
"a,b,c,d,e,f,g,1,2,3,4,5,6,7".split(/,/g)
["a", "b", "c", "d", "e", "f", "g", "1", "2", "3", "4", "5", "6", "7"]
08:34
看视频
1
采集 0
2-12 字符串对象方法
2017-03-19
`a1b2c3d4e5f6g7`.replace(/\d/g, (match, index, origin)=>{
console.log(index);
for(match of origin){
console.log(match);
}
return parseInt(match) + 1;
});
13:42
看视频
0
采集 0
2-7 JS正则贪婪模式与非贪婪模式
2017-03-19
如果在数量词 *、+、? 或 {}, 任意一个后面紧跟该符号(?),会使数量词变为非贪婪( non-greedy) ,即匹配次数最小化。反之,默认情况下,是贪婪的(greedy),即匹配次数最大化。
`123456789`.replace(/\d{3,7}/=);
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/match
当一个字符串与一个正则表达式匹配时, match()方法检索匹配项。
str.match(regexp);
`123456789`.replace(/\d{3,7}/,`xyz`);
"xyz89"
`123456789`.replace(/\d{3,7}?/,`xyz`);
"xyz456789"
00:34
看视频
0
采集 0
举报
0/150
提交
取消