?在正则中的作用

?在正则中有很多的作用
1、它本身作为一个量词元字符代表出现0-1
var reg=/d?/; ->0-9之间的一个数字,出现0次或者1

2、出现在另外一个量词元字符的后面,是取消捕获时候的贪婪性
var reg=/d+?/g;
var str="tengxun2015";
str.match(reg); ->["2", "0", "1", "5"]
3、?: 对于分组来说,是只匹配,不捕获
var reg=/tengxun(d+)/g;
var str="tengxun2015~~~tengxun2016~~~";
reg.exec(str) ->["tengxun2015","2015"...]
reg.exec(str) ->["tengxun2016","2016"...]
var reg=/zhufeng(?:d+)/g;
var str="tengxun2015~~~tengxun2016~~~";
reg.exec(str) ->["tengxun2015"...]
reg.exec(str) ->["tengxun2016"...]
4、?= 正向预查 / ?!负向预查
/tengxun(?=1|2)/ 把符合后面是1或者2,前面是tengxun的"tengxun"匹配到 ->"tengxun1",我们匹配的是"tengxun",如果是"tengxun3",我们是匹配不到"tengxun"
/tengxun(?!1|2)/ 把符合后面不是1或者2,前面是tengxun的"tengxun"匹配到
原文地址:https://www.cnblogs.com/supershare/p/8488772.html