RegExp入门笔记

前言:

  一开始我是拒绝学正则表达式的,暑假看慕课上的PHP进阶课程里有一章是专门讲正则,然后我思考的几秒钟,就略过了。理由和大家一样,畏惧,听很多人说正则很难,然后就果断放弃。但是昨天看到知乎上有个话题,问大家为什么不喜欢正则,然后看到下面很多大神说正则处理字符串很有用,很有用,很有用,甚至有人说正则很有趣! 好吧,既然有用的东西,就一定要学,一定要学,一定要学!想当年我学微观经济这门课都是拒绝的,头疼的,但是后来期末备考却发现它的乐趣。所以,任何事情,只要用心投入,一定会收获到乐趣。


什么是RegExp?

描述字符串规则的表达式。 

语法

  • 直接量语法:/pattern/attrs
  • 创建对象的语法:new RegExp(pattern,attrs)

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g"表示全局匹配,"i" 表示不区分大小写的匹配

RegExp 对象方法

regexpObj.test(str)

测定正则表达式与指定字符串是否匹配。只要指定字符串中包含正则表达式,则返回true,否则返回false。

regexpObj.exec(str)

更强大的搜索,更详尽的结果:index,过程的状态:lastindex

锚点

用来匹配一个位置。

  • ^ 表示起始位置
  • $表示结尾位置
  • 表示单词边界

字符类

匹配一类字符中的一个

  • [abc] 表示a或b或c
  • [0-9] 表示0到9中的任何一个数字
  • [^0-9] 表示非数字的一个字符,这里的^ 表示非的意思
  • [a-z] 表示a到z中任何一个字母
  • . 表示任何一个字符(换行除外)

元字符

具有特殊意义的字符

  • d 等价于[0-9],表示查找数字
  • D 等价于[^d],表示查找非数字
  • s表示查找空白字符,空白符指的不只是按下空格键在屏幕上显示的空格字符,还包括制表符,换行和回车符。
  • S等价于[^s],表示查找非空白字符
  • w等价于[A-Za-z0-9],表示查找单词字符
  • W等价于[^w],表示查找非单词字符

量词

表示出现的次数

  • {m,n}表示m到n次
  • * 表示{0,}  即0到任意次
  • ? 表示{0,1} 即0或者1次
  • + 表示{1,...} 即1到任意次

例子:

/^1d{10}$/ 表示匹配一个以1开头,一共有11个数字的字符串

转义符

需要匹配的字符是特殊字符,所以需要转义一下啦

例子:

/@163.com$/ 表示匹配一个以@163.com结束的字符串,其中.是特殊字符,需要转义

多选分支

或用|表示

例子:

/b(a|e)d/ ===/b[ae]d/ 表示匹配bad或者bed

/.(png|jpg|gif|jpeg)$/ 表示匹配图片格式

字符类是一种特殊的多选分支

捕获

保存匹配到的字符串,以便日后再用。

()表示捕获

(?:)表示不捕获

支持正则表达式的 String 对象的方法

 str.match(regexp)

获取匹配的字符串

str.replace(regexp/substr,replacement)

替换与正则表达式匹配的子串。

btw:

  1. 正则表达式的匹配只做一次,因此需要用到属性g表示全局模式。
  2. 正则表达式中,量词的惰性与贪婪模式的区别?

  

 

原文地址:https://www.cnblogs.com/rosestudy/p/4840787.html