写在前面:正则表达式是各种编程语言中的字符串匹配查找必备武器,尤其在网络抓包中是非常有用的。这篇文章是题主对自己学习(JS)正则表达式的一点心得的总结,也想把学习正则的过程中的一些笔记分享出来给大家,如果你有兴趣,欢迎来踩。ps:正则对于(除JS外)其他语言大同小异,学会JS正则,其他语言不成问题。
偷偷告诉你,编译原理里面的正规式也就是这里说的正则啦! O
1. 正则简介:
凡涉及正则表达式的问题都可以分为两个对象:规则式|正则表达式(可理解为渔网),目标文本(可理解为湖里的鱼)。而咱们需要做的也就是自己制作渔网,来捞取湖中的鱼群。而这个渔网具体长什么样子,需要过滤掉什么鱼,捞取什么鱼,网孔多大,这个规则是要我们自己去设计的,而设计的原料就是正则语法,设计成品就是符合自己目标需求的渔网。
工欲善其事,必先利其器
推荐正则在线学习工具
2.基本语法
(1)元字符
- ''\'' 转义字符。比如:"\+"匹配"+","\("匹配"(".
- "^" 表示之前以后面紧跟的字符为首匹配,但在"[67]"字符集合里出现,就是不能匹配67(这个例子中)。
- "$" 表示字符串以$前面紧密连接的字符结束。(后面无字符)"[^a\w+d$]"表示以a开头d结尾的字符串。
- "\w" 表示小写字母,大写字母,数字以及下划线,等同于[a-zA-Z0-9_]
- "\W"(大写W) 反义于"w"(非字母数字下划线)
- "\d" 表示数字[0-9]
- "\D" 非数字 [^0-9]
- "\s" 匹配任何空白字符
- "\S" 匹配任何非空字符 [^s]
- "^[\u4e00-\u9fa5]+$" 匹配任意单个简体中文汉字(这里用的是 Unicode 编码表示汉字的 )
- 注意! "[]"(中括号)表示里面是字符集和,默认匹配一个,()(小括号)是子表达式
(2)限定符
- "{n-m}"(n,m均为数字)表示前面字符出现次数为至少n次,最多m次。比如[\d]{2,5}表示匹配2到5个数字
- "{n,}"表示匹配n次到无限次。\w{6,} 匹配至少6个字符
- "+"匹配1个或多个
- "?"匹配0个或1个
- "*"匹配0个或多个
-
"��\b"边界限制,如"�hello�"匹配单个hello字符串
(3) ".*?" 懒惰匹配,相对于贪婪匹配:".*"
!!元字符匹配自身必须转义!!元字符匹配自身必须转义
!!元字符匹配自身必须转义
重要的事说三遍~~~
@看下例--
常用正则式:
- IP地址
(((d{1,2})|(1d{2})|(2[0-4]d)|(25[0-5])).){3}((d{1,2})|(1d{2})|(2[0-4]d)|(25[0-5])) - 电话号码
((13)|(15)|(18)|(17))d{9} - 邮箱
\w+[\w.]*@[\w.]+.\w+
意外收获 哈哈
一直在编程时的Tab键(\t)就有些奇怪,今天算是搞明白了,一些尽在图中:正则还有很多其他的深层次内容,后续继续添加。__