美文网首页@IT·互联网程序员
浅谈(JS)正则表达式

浅谈(JS)正则表达式

作者: 夏夜星语 | 来源:发表于2015-11-16 01:01 被阅读286次

写在前面:正则表达式是各种编程语言中的字符串匹配查找必备武器,尤其在网络抓包中是非常有用的。这篇文章是题主对自己学习(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) ".*?" 懒惰匹配,相对于贪婪匹配:".*"


贪婪匹配 懒惰匹配

!!元字符匹配自身必须转义!!元字符匹配自身必须转义
!!元字符匹配自身必须转义
重要的事说三遍~~~
@看下例--

运算符转义 运算符未转义

常用正则式:

  1. 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]))
  2. 电话号码
    ((13)|(15)|(18)|(17))d{9}
  3. 邮箱
    \w+[\w.]*@[\w.]+.\w+

意外收获 哈哈

一直在编程时的Tab键(\t)就有些奇怪,今天算是搞明白了,一些尽在图中: Tab键的秘密

正则还有很多其他的深层次内容,后续继续添加。__

相关文章

网友评论

    本文标题:浅谈(JS)正则表达式

    本文链接:https://www.haomeiwen.com/subject/wohkhttx.html