前端工程师-正则表达式-我不明白的问题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);
// ["{{}}"]


....原来我只是分不清啥子是子表达式,你是笨蛋吗春疾风

 

 

 

posted @ 2020-10-13 15:50  ELSE-IF  阅读(84)  评论(0)    收藏  举报