
首先:/xxxx/g直接的先开始正则需要写在/内部例:g指的属于全局就是在全局内运行匹配起这样的作用i表示忽略大小写,m表示多行匹配******************基本用法*****************1 例如输入:/ctf/g只有多加了一个ctf意思是属于在全局内找这个叫ctf的字符串子串按我的理解好理解一点就是一个单词2 .官方:匹配任意一个字符举个例子:/cf./g指的就是在全局存在一个叫做trcfd的或者别的字符串子串cfd就会亮因为只有一个.号所以只会亮这四个字母#注意: .可以放在任意位置匹配一个字母再举个例子在前面的例:/.ct/g指的是在全局中存在wct或其他的或者更多的更长的字符串子串假如亮一个twct的就会点亮wct中间的:已经了两个例子了就不浪费时间了自己理解:/c.t/g可以供自己理解做到举一反三###这样的话是匹配的全局如果一次性想匹配多个的话看下面的开始提升自学难度###3 [ ]举个例子好理解:/at[ce0]/g这样写目的是可以更准确的让用户找到大致记得的概率更好的查到同样这个还可以放在任何地方而这样写的结果就是匹配在全局中的atcateat0[ ]可以放入任何字母数字例如在全局中有一个叫做uqpatcn结果是什么呢对的atc会亮不管多长的单词只要全局中有这几个atcateat0这就是这个的作用已经举了这个例子了放在别的位置自己想举一反三4 -这个还是可以放在任何地方不过问题是放在外面属于普通的放在中括号内就又是另外一层意思1举一个外面的例:/x-tu[ut0]/g匹配:x-tuux-tutx-tu0固定的这样的搭配第一条一起理解就行2举一个方括号里的例:/tu-tup[a-z]/g这就是范围的意思匹配tu-tupa到tu-tupz在全局内查找这个区间的变的就是最后面的英文字母不仅仅括号内只有这点继续举例子/tu-tup[a-zA-Z0-9]/g这个就给你自己理解吧理解不了多读几遍注意不需要有英文逗号5 ^继续难例:/tu-tup[^a-z]/g这样就有意思多了可以把这个符号理解为除了这是我的大白话这样的意思就是不匹配a到z小写但是A到Z0到9不在呀不在这个啥了的区间内呀tu-tupa-z关我tu-tupA-Ztu-tup0-9屁事这个感觉很简单继续举一反三吧/tu-tup[^a-z][0-9]/g闲的没事干继续提升难度我认为这个就是匹配两个而..也可以匹配两个呢意思是第二个字符必须是零到九^如果在方括号内就是取反就是上面的这个我说的除了放在外面就是匹配每一行开头的字母继续举例吧/^tu-put[^1-9][a-w]/g后面的[^1-9][a-w]/g就不说废话了只说前面的/^tu-put开头必须是这个后面的就不废话了吧如果这样写的话因为后面有个g意思是最开头的就相当于第一行的第一个必须是这个为了避免这个/^tu-put[^1-9][a-w]/gm应该这样写才是匹配每一行的开头的第1个单词要求的是开头必须是tu-put这个样子6 \d如果懒得写[0-9]这就是代替的方式\d是属于数字的例如:/tu-put\d/g这个样子就是指匹配零到九的懒人写法但是灵活性很差我认为我说的灵活性指的是他只有固定的[0-9]不能改成别的他是写死了的7 \D意思是 除0‑9以外全部字符不局限字母非数字的除了字母不就成符号了吗/tu-put\D/g作用什么样子的推演吧还是灵活性太差用我写的这个例子的正则匹配的是tu-puta-ztu-putA-Z具体的自己想8 \w用来匹配字母数字下划线9 \W用来匹配特殊字符10 \s用来匹配空白字符Tab11 \S不匹配空白字符Tab其他的都匹配*****************现放松一下****************891011可以根据67去理解可以引起更深入的思考我个人认为学这种东西如果只背公式固定的公式永远也无法学习成功这是在套公式但这种东西我们应该把它学活我们去支配它而不是它支配我们。********************************************##########位置和边界匹配##########12 m修饰符:多行匹配13 $意思与^对应用处与^相反匹配后面^匹配前面可以这样写:/a$/gm意思就是a就是这一行最后一个字符的结尾而结尾就是a不说这种话说普通人可以听懂用小学课本每一篇文章的自然段来讲而$就是这一行的结尾个人感觉用来匹配一行的最后一个不存在/aa$$/gm为什么因为最后一个字符结尾而结尾也只有一个和课本上的自然段一样 /aa$/gm作用匹配每一行的最后两个字符刚好是 aa 。如果想匹配点好的话应该这样写/\.$/gm因为.号非常特殊这样写相当于是告诉正则表达式把这个点号当成普通的一个点号14 还可以这样写/^at$/gm这样写相当于直接告诉正则表达式只有一个at可能是一行或者是一句15 \b这个的用处在大白话中指的是全局中某一句匹配的单词是某个例如:/\btt/gm指的是匹配全局tt开头的这个没有举一反三我个人目前认为这是一个写死了的一个。像一个公式一样固定在哪里的。16 还可以这样写如果只想匹配某个单词/\btt\b/gm这样就只会在全局匹配tt这个单词17 \B可以这样写/\Bin\B/gm只用来匹配全局当中单词中间只为in的单词这样写是固定只匹配\B中间的那个单词##############量词#######################这一些较为抽象########这些个人理解对于普通人难度较高18 直接举例例如:/ct/gm这个例子就是说明是在全局变量中检测的时候可以匹配所有的字符串而ct底层意思就是cttttttctctt这些后面带多个t的就相当于是加号总体总结:大白话匹配全局中ct所有后面ct后带t的不会匹配c也不会匹配cta、ctb19 *直接举个例子好理解一点:/ct*/gm相当于意思是:把ct可以看成3个可以分为ctctctttctttt在全局中匹配这个字符串这个ct的值没有限制可以分为无数次- 匹配 c t0、 ct 、 ctt 、 ctttt- 不匹配 cta 、 ctb20 ?直接举例子:/ct?/gm这样的意思是在全局内匹配c或ct没有t这个值的在全局内匹配- 匹配 c 、 ct- 不匹配 ctt 、 cttt 两个及以上t就不行 * ? 只作用于它紧挨着的那一个字符。21 { }1直接开始举例子/at{3}/gm这样写的总体意思是给了一个固定的值而这个值指的是at后面再跟几个t表示t重复了三次少一个t或者多一个t都不行大括号有三种用法一种就是这个另一种2举例:/at{3,9}/gm这样写的作用是前面的是固定三个t而这个是固定三到九个t匹配这个3举例:/at{3,}/gm直接讲意思就表示至少重复三次以上三次以下也不行大白话意思就是只匹配attt以上的值三个以下就是不行22 贪婪非贪婪例如:/at{3,}/gm这样写正则默认是全收如同人性的贪婪一样用这个正则至少匹配attt小于这个不行不然的话attttttttt就像是这个有无限个t也是会被匹配的这就叫做贪婪例如:/at{3,}?/gm这样写情况就又变了只是多加了一个英文的问号所以at中的t就只有三个也就是attt了不多也不少t就叫做非贪婪############分组和引用###########23 ( ) 分组首先所谓的分组感觉就像是一个整体直接举例子:/(at)*/gm而at就是一个分组这就叫分组这样写的话只会匹配atatat这个样子的与单一个at的匹配而且还是个无限的只要是atatatat就可以无限下去这就叫做分组如果写成/(at){3}/gm这就更能证明at是一个整体啊在全局搜索需要满足一个条件固定写死了必须是atartat这个字符串才可以其他的一律不行24 | 或的意思如果我要查找一个叫做Kali的单词而且大小写我都要最简单的也可以用分组直接开写/(K|k)ali/gm这样写就可以匹配全局的所有Kali与kali这就是这个的意思25 分组还有重要的一个点就是捕获使用小括号创建一个分组之后我们也可以捕获匹配到这个分组的内容在后续的处理中也可以引用或者提取部分内容举个例子如一段 文本当中有很多日期我们想要把年月日提取出来那么就可以创建三个分组用来存年月日然后在后面的处理中就可以引用捕获到的内容首先全局中需要先有日期才行开写/\d{4}-\d{1,2}-\d{1,2}/gm现在日期就匹配到了如果要改成月日年然后就得先把年月日提出来然后调整一下顺序就可以/(\d{4})-(\d{1,2})-(\d{1,2})/gm这样鼠标靠近就可以显示然后点替换这个按钮在这里输入$3-$2-$1这样下面就可以变成月日年再来看一个复杂点的/(\d{4})[-/_.]?(\d{1,2})[-/_.]?(\d{1,2})/gm这样就好了然后再输入$3-$2-$1就好了26 分组还有重要的一个点就是引用需要匹配的是:alibabatencentgooglebaidu可以这样写/\b([a-z])[a-z]*\1\b/gm就可以匹配alibabatencent############前瞻和后顾###########27 前瞻前瞻匹配到某些字符前面的内容分为正向前瞻和负向前瞻直接举例 :全局为$100$200$abc$def28 正向前瞻 ?例如现在我想找数字前面的$但是不想匹配到字母前面$这个时候就可以使用正向前瞻/\$\d/gm这样写就可以找到数字前面的金额了$100$200但是必须要的是$那就可以这样写。/\$(?\d)/gm这样写选中的就是$而不是全体29 负向前瞻 ?这样写/\$(?!\d)/gm负向前瞻指的就是后面的内容不是数字金额的时候才会匹配到前面的$30 后顾匹配到某些字符后面的内容分为正向后顾和负向右顾31 正向后顾 ?/(?\$)\d/gm可以这样写得到$100$200后面的数字正向后顾就是当前面的内容是某些字符的时候才匹配到后面的内容32 负向后顾 ?!/(?!\$)\d/gm可以这样写得到$abc$def得到后面的字母负向后顾就是当前面的内容不是某些字符的时候才匹配到后面的内容33 转义符 \用到的情况/\.$/gm因为.号非常特殊这样写相当于是告诉正则表达式把这个点号当成普通的一个点号这就是转义符的作用