前端工程师-正则表达式-我不明白的问题1
(寻找灵魂的共鸣:你有没有过这种感觉,其实正则表达式一直是那种迷迷糊糊的,不知道怎么用,都是百度copy,如果你有,欢迎一起来探讨)
首先我又重温了几个,我一直死活记不住的东西:
‘()':表示一个子表达式
'.':匹配除\n外的所有单字符
‘+’:匹配前面子表达式一次或多次
'?':匹配前面子表达式0次或一次(配上它就是开启了懒惰模式)
这个?放在括号外面跟括号里面到底有什么区别呢?为什么就匹配出不一样的了
?在括号里面 "aa{{bb}}cc{{dd}}ee".match(/\{\{(.+?)\}\}/g); // ["{{bb}}", "{{dd}}"] // 在这里 这个. ?在括号外面 "aa{{bb}}cc{{dd}}ee".match(/\{\{(.+)?\}\}/g); // ["{{bb}}cc{{dd}}"] // 在这里这个.就包括了bb}}cc{{dd
现在我明白了,那个问号,他就是匹配子表达式
这个子表达式,就是要么()里包着的,要么就是问号前头紧紧挨着的那个字符,然后他出现1次,或者不出现都可以匹配到
比如:
"aa{{bb}}cc{{}}ee{{fff".match(/\{\{.?\}\}/g); // ["{{}}"]
....原来我只是分不清啥子是子表达式,你是笨蛋吗春疾风
连雨不知春去,一晴方觉夏深