正则表达式 *

官方文档解释 匹配前一个表达式 0 次或多次。等价于 {0,}

var reg = /bo*/
var reg1 = /bo{0,}/  类同上
var str1 = "A ghost boooooed"
var str2 = "A bird warbled"
var str3 = "A goat grunted"
str1.match(reg) // boooooo
str2.match(reg) //b
str3.match(reg) //null

从上面结论得出 o可以多次匹配 b后面没有o就不可以匹配,如果o前面不是b也匹配不上

问题来了,b可以匹配多次吗//毕竟是0次或多次

var str4 = "A goat grunted bbbbb"
str4.match(reg) //b

结果出来了,竟然是只有一次b,这和我想的有点出入,那bo是一个整体吗,也并不是第一个就可以看出o匹配了多次

var reg2 = /bbo*/;
var str1 = "A ghost boooooed"  // null 第二位没有匹配上 boooooed
var str2 = "A bird warbled"    //null 第二位没有匹配上
var str3 = "A goat grunted"   
var str4 = "A goat grunted bbbbb"  // bb 两位匹配上 但是没有o
var str5 = "A goat grunted bboooooo" // bboooo 前两位匹配上且o多次匹配
console.log(str1.match(reg2)) //null 
console.log(str2.match(reg2)) //null
console.log(str3.match(reg2)) //null
console.log(str4.match(reg2)) //bb
console.log(str5.match(reg2)) //bboooooo
var reg2 = /b*/;
var str1 = "A ghost sboooooed" //null
var str2 = "A bird warbled"//null
var str3 = "A goat bbbbsdfsd"//null 空格没有匹配
var str4 = "bbbbbsdsd"// bbbbbb 只能以b开头的0-n 次
var str5 = "A goat grunted sdbboooooo"//null

总结:对比两个reg匹配字段有的0或者多次,假如前面只有一个数字或者字母等那就是0-多次,如果前面匹配时候长串的比如 bbo这种,除了最后一位可以匹配多次之外,前面的都且只能匹配1次,假如第一个是0次,那直接返回null,只要前面几位其中一个是0次,那返回的就是null,如果前几位都匹配上并且只有一次,那最后一个就有多次可以匹配

刷新了我对*号的认识
课外练习题
var reg = /[0-9]*/
var reg1 = /\d*/
var str1 = "asdf0333"
var str2 = "1231sfsdf"
var str3 = "sd12222er" 
console.log(str1.match(reg1))
console.log(str2.match(reg1))
console.log(str3.match(reg1)) 

追加理解认识,正则如果匹配多个列如

let reg = /bbs*/

最后一位 就是 前一个表达式
所以最后一位前面的所有表达式必须匹配了之后,才能让*号前的表达式匹配多次 当然表达式不一定是一个数字字母,还可能是\d这种


如果美是罪
14 声望1 粉丝

github账号[链接]