前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >正则表达式入门

正则表达式入门

作者头像
我不是费圆
发布2020-09-21 16:19:25
8410
发布2020-09-21 16:19:25
举报
文章被收录于专栏:鲸鱼动画鲸鱼动画

有些知识,我们只需要付出一点点时间,把它掌握了,会大大提高我们的效率,节省我们的时间。正则表达式就是这样的知识,但是,作为入行好几年的我来说,正则表达式一直是一头雾水,今天决定把它好好研究研究。

1.什么是正则表达式

正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。

通俗来讲:正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子.

2.js中Regexp对象

Javascript 通过内置对象RegExp支持正则表达式,有两种方法实例化RegExp对象

2.1字面量方法

const reg = /\bqing\b/g

2.2构造函数

const reg = new RegExp(’\bqing\b’,‘g’)

3.正则表达式语法

3.1 元字符

正则表达式主要依赖于元字符. 元字符不代表他们本身的字面意思, 他们都有特殊的含义. 一些元字符写在方括号中的时候有一些特殊的意思. 以下是一些元字符的介绍:

点运算符 .

点运算符匹配除了换行符以外的任意字符

在这里插入图片描述
在这里插入图片描述

3.2 字符类

[] 方括号用来指定一个字符集,在方括号中使用连字符来指定字符集的范围,并且方括号中的字符集不关心顺序

在这里插入图片描述
在这里插入图片描述

否定字符类

一般来说表示一个字符串的开头,但当它用在方括号里面的时候,表示否定的关系。比如[ar]匹配一个后面跟着ar的除了c的任意字符。

在这里插入图片描述
在这里插入图片描述

3.3 重复次数

*3.3.1 字符

*号匹配在 *之前的字符出现大于等于0次,就是出现0次或多次

3.3.2 +字符

+号匹配+号之前的字符出现 >=1 次.

在这里插入图片描述
在这里插入图片描述

3.3.3 ?字符

?表示在?之前的字符为可选,即表示出现0次或者1次。比如[T]?he匹配字符串he和The

在这里插入图片描述
在这里插入图片描述

3.4 {} 号

在正则表达式中 {} 是一个量词, 常用来一个或一组字符可以重复出现的次数. 例如, 表达式 [0-9]{2,3} 匹配最少 2 位最多 3位 0~9 的数字.

在这里插入图片描述
在这里插入图片描述

3.5 范围类[-]

正则表达式支持一定的范围规则比如[a-z] [0-9] [A-Z]

在这里插入图片描述
在这里插入图片描述

3.6 | 或运算符

在这里插入图片描述
在这里插入图片描述

3.7 转码特殊字符

反斜线 \ 在表达式中用于转码紧跟其后的字符. 用于指定 { } [ ] / \ + * . $ ^ | ? 这些特殊字符.如果想要匹配这些特殊字符则要在其前面加上反斜线 .

3.8 边界

字符

含义

^

以^后面的字符开头

$

以 $前面的字符结尾

\b

单词边界,指[a-zA-Z0-9]之外的字符

\B

非单词边界

3.9 修饰符(i, g, m)

修饰符

描述

i

忽略大小写

g

全局搜索

m

multiple lines多行匹配

在这里插入图片描述
在这里插入图片描述

4. 简写字符集

正则表达式提供一些常用的字符集简写. 如下:

简写

描述

.

除换行符外的所有字符

\w

匹配所有字母数字,等同于[a-zA-Z0-9]

\W

匹配所有非字母数字,即符号,等同于[^\w]

\d

匹配数字: [0-9]

\D

匹配非数字:[^\d]

\s

匹配所有空格字符,等同于: [\t\n\f\r\p{Z}]

\S

匹配所有非空格字符: [^\s]

\f

匹配一个换页符

\n

匹配一个换行符

\r

匹配一个会车符

\t

匹配一个制表符

5. 贪婪匹配与惰性匹配 (Greedy vs lazy matching)

正则表达式默认采用贪婪匹配模式,在该模式下意味着会匹配尽可能长的子串。我们可以使用 ? 将贪婪匹配模式转化为惰性匹配模式

在这里插入图片描述
在这里插入图片描述

6. 零宽度断言(前后预查)

正则表达式中有前瞻(Lookahead)和后顾(Lookbehind)的概念,这两个术语非常形象的描述了正则引擎的匹配行为。需要注意一点,正则表达式中的前和后和我们一般理解的前后有点不同。一段文本,我们一般习惯把文本开头的方向称作“前面”,文本末尾方向称为“后面”。但是对于正则表达式引擎来说,因为它是从文本头部向尾部开始解析的(可以通过正则选项控制解析方向),因此对于文本尾部方向,称为“前”,因为这个时候,正则引擎还没走到那块,而对文本头部方向,则称为“后”,因为正则引擎已经走过了那一块地方。

6.1 正向前瞻

定义一个正向前瞻要使用(),在括号内部使用一个问好和等号:(?=xxx)

在这里插入图片描述
在这里插入图片描述

6.2 负向前瞻

负向前瞻只需要把正向前瞻的=改成! 即(?!xxx) 表达式 (T|t)he(?!\sfat) 匹配 The 和 the, 且其后不跟着(空格)fat.

在这里插入图片描述
在这里插入图片描述

6.3 正向后顾

定义一个正向后顾要使用(),在括号内部使用一个问好、小于号和等号?<=xxx 用于筛选所有匹配结果, 筛选条件为 其前跟随着断言中定义的格式. 例如, 表达式 (?<=(T|t)he\s)(fat|mat) 匹配 fat 和 mat, 且其前跟着 The 或 the.

在这里插入图片描述
在这里插入图片描述

6.4 负向后顾

和正向后顾相似,只需要把=改成!,?<! 用于筛选所有匹配结果, 筛选条件为 其前不跟随着断言中定义的格式. 例如, 表达式 (?<!(T|t)he\s)(cat) 匹配 cat, 且其前不跟着 The 或 the.

在这里插入图片描述
在这里插入图片描述

7.应用

7.1 手机号正则

/^1[34578][0-9]{9}$/

7.2 URL分组替换

/http:(//.+.com)/

在这里插入图片描述
在这里插入图片描述

7.3 日期匹配与分组替换

/^(\d{4})/-/-$/

在这里插入图片描述
在这里插入图片描述

好了好了,就这么多了,祝大家学习愉快

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.什么是正则表达式
  • 2.js中Regexp对象
  • 3.正则表达式语法
  • 4. 简写字符集
  • 5. 贪婪匹配与惰性匹配 (Greedy vs lazy matching)
  • 6. 零宽度断言(前后预查)
  • 7.应用
  • 7.3 日期匹配与分组替换
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档