正则表达式使用语法及常用实例(上)

正则表达式

正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。

搜索模式可用于文本搜索和文本替换。

语法

/正则表达式主体/修饰符(可选)
// 实例 var patt = /runoob/i

/runoob/i

一个正则表达式

runoob

正则表达式主体 (用于检索)

i

一个修饰符 (搜索不区分大小写)

描述字符(元字符)

元字符是有特殊含义的字符。大部分需要加反斜杠进行标识

元字符

描述

.

查找单个字符,除了换行和行结束符

\w

查找单词字符

\W

查找非单词字符

\d

查找数字

\D

查找非数字

\s

查找空白字符

\S

查找非空白字符

\b

匹配单词边界

\B

匹配非单词边界

\0

查找 NUL字符

\n

查找换行符

\f

查找换页符

\r

查找回车符

\t

查找制表符

\v

查找垂直制表符

\xxx

查找以八进制数 xxxx 规定的字符

\xdd

查找以十六进制数 dd 规定的字符

\uxxxx

查找以十六进制 xxxx规定的 Unicode 字符

描述字符范围

在正则表达式语法中,方括号表示字符范围。

  • 在方括号中可以包含多个字符,表示匹配其中任意一个字符。
  • 如果多个字符的编码顺序是连续的,可以仅指定开头和结尾字符,省略中间字符,仅使用连字符-表示。
  • 如果在方括号内添加脱字符^前缀,还可以表示范围之外的字符。

范围表达式

描述

[abc]

查找方括号内任意一个字符

[^abc]

查找不在方括号内的字符

[0-9]

查找任何从 0 至 9 的数字

[a-z]

查找从小写 a 到小写 z 范围内的字符,即查找小写字母

[A-Z]

查找从大写 A 到大写 Z 范围内的字符,即查找大写字母

[A-z]

查找从大写 A 到小写 z 范围内的字符,即所有大小写的字母

()

分组

选择匹配

选择匹配类似于 JavaScript 的逻辑与运算,使用竖线|描述,表示在两个子模式的匹配结果中任选一个

  • (x|y)查找任何以 | 分隔的选项

重复匹配

在正则表达式语法中,定义了一组重复类量词,如表所示。它们定义了重复匹配字符的确数或约数。

量词

描述

n+

匹配任何包含至少一个 n 的字符串

n*

匹配任何包含零个或多个 n 的字符串

n?

匹配任何包含零个或一个 n 的字符串

n{x}

匹配包含 x 个 n 的序列的字符串

n{x,y}

匹配包含最少 x 个、最多 y 个 n 的序列的字符串

n{x,}

匹配包含至少 x 个 n 的序列的字符串

使用时

// 量词?表示前面字符或子表达式为可有(一个)可无
匹配'gogle';'ggle'
var r = /go?gle/g; // 等价于 var r = /go{0,1}gle/g;
// 量词*表示前面字符或表达式可以不出现,或者重复出现任意多次
var r = /go*gle/g; // 等价于 var r = /go(0,)gle/g;
// 量词+表示前面字符或子表达式至少出现 1 次,最多重复次数不限
var r = /go+gle/g; // 等价于 var r = /go{1,}gle/g;

惰性匹配

重复类惰性匹配的简单描述如下

{n,m}?

尽量匹配 n 次,但是为了满足限定条件也可能最多重复 m 次。

{n}?

尽量匹配 n 次。

{n,}?

尽量匹配 n 次,但是为了满足限定条件也可能匹配任意次。

??

尽量匹配,但是为了满足限定条件也可能最多匹配 1 次,相当于 {0,1}?。

+?

尽量匹配 1 次,但是为了满足限定条件也可能匹配任意次,相当于 {1,}?。

*?

尽量不匹配,但是为了满足限定条件也可能匹配任意次,相当于 {0,}?

边界量词

边界就是确定匹配模式的位置,如字符串的头部或尾部

边界量词

描述

^

匹配开头,在多行检测中,会匹配一行的开头

$

匹配结尾,在多行检测中,会匹配一行的结尾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值