关于javascript:正则表达式之-星号

66次阅读

共计 1278 个字符,预计需要花费 4 分钟才能阅读完成。

正则表达式 *

官网文档解释 匹配前一个表达式 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)) 

正文完
 0