正则表达式

作者: squall1744 | 来源:发表于2017-11-04 10:53 被阅读0次

先上干货,两个强烈推荐网站
正则表达式可视化
正则表达式在线工具

下面是正文了,其实也不是什么正文,就是点总结的笔记吧,其实最精华的就是上面那两个网站,下面大家想看就看不想看就不看了吧

元字符

( [ { \ ^ $ | ) ? * + .

字符 含义
\t 水平制表符
\r 回车符
\n 换行符
\f 换页符
\cX 与X对应的控制字符(Ctrl + X)
\v 垂直制表符
\0 空字符

字符类

一般情况下一个字符对应字符串一个字符,如表达式 abc的含义就是


匹配单个字符串

范围类

使用[]可以表示一类字符

[a-zA-Z0-9] //匹配所有字母(包括大小写)和数字
匹配一类字符

预定义类

字符 等价类 含义
. [^\r\n] 除了回车和换行符之外的所有字符
\d [0-9] 数字字符
\D [^0-9] 菲数字字符
\s [\t\n\x0B\f\r] 空白符
\S [^\t\n\x0B\f\r 非空白符
\w [a-zA-Z0-9_] 单词字符,字母、数字和下划线
\W [^a-zA-Z0-9_] 非单词字符,字母、数字和下划线

学了上面这些类,我们写一些正则表达式就很方便了,比如我们希望匹配一个ab+数字+任意字符,可以这么写:

ab\d.
ab\d.
字符 含义
^ 以xxx开头
$ 以xxx结尾
\b 单词边界
\B 非单词边界

例如,我们要匹配一个字符串为国内手机号可以用下面代码

^1[3578]\d{9}$
匹配国内电话号码

量词

字符 含义
? 出现零次或一次(最多出现一次)
+ 出现一次或多次(至少出现一次)
* 出现零次或多次(任意次)
{n} 出现n次
{n,m} 出现n到m
{n,} 至少出现n次
{,m} 最多出现m次

举例

'a12345678cde'.match(/[a-z]\d?/g)
> ['a1', 'b6', 'c', 'd', 'e']
[a-z]\d?

贪婪模式和非贪婪模式

量词在默认情况下是尽可能多的匹配的,也就是大家说的贪婪模式

'123456789'.match(/\d{3,5}/g)
>['12345', '6789']

非贪婪模式下,正则表达式尽可能少的匹配,做法很简单,在量词后面加上?即可

 '123456789'.match(/\d{3,5}?/g)
 >['123', '456', '789']   

举例

//贪婪模式
'a12345b678ced'.match(/[a-z]\d?/g)
>['a1', 'b6', 'c', 'd', 'e']
//非贪婪模式
'a12345b678ced'.match(/[a-z]\d??/g)
>['a', 'b', 'c', 'd', 'e']

//贪婪模式
'a12345b678ced'.match(/[a-z]\d+/g)
>['a12345', 'b678']
//非贪婪模式
'a12345b678ced'.match(/[a-z]\d+?/g)
>['a1', 'b6']

//非贪婪模式
'a12345b678ced'.match(/[a-z]\d*?/g)
>['a', 'b', 'c', 'd', 'e']

分组

单个字母加量词只能对一个字母匹配多次,有时候我们需要对多个字符同时使用量词,如希望匹配某个单词出现多少次的字符串,我们如果写成word{20}话匹配的是wor+d重复20次

word{20}
word{20}

如果怎样才能把word看成一个整体呢?使用()就可以了,这就是我们所说的分组

(word){20}
(word){20}

我们需要匹配word或者number出现20次怎么弄?使用|即可
(word|number){20}
(word|number){20}

前瞻

正则表达式中的前和后和我们一般理解的前后有点不同。一段文本,我们一般习惯把文本开头的方向称作“前面”,文本末尾方向称为“后面”。但是对于正则表达式引擎来说,因为它是从文本头部向尾部开始解析的,因此对于文本尾部方向,因为这个时候正则引擎还没走到那块,所以他是正则的前方。而对文本头部方向,因为正则引擎已经走过了那一块地方,所以他是正则的后方。如下图所示:

正则表达式的方向

前瞻表达式

表达式 含义
exp1(?=exp2) 匹配后面是exp2的exp1
exp1(?!exp2) 匹配后面不是exp2的exp1

举例

good(?=word)
good(?=word)
(/good(?=game)/).exec('goodgame123'); //['good']
(/good(?=game)/).exec('goodluck123'); //null
(/good(?=game)/).exec('goodmum123'); //null

通过上面的例子可以看出只有在exp1后面的表达式是exp2的时候才会匹配exp1

结束语

关于正则表达式的常用语法,我们就讲完了,其实就常用语法来说,正则表达式并没有什么太多的内容,但是用起来呢就。。。。

相关文章

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

网友评论

    本文标题:正则表达式

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