由浅入深正则表达式

基础

正则表达式校验工具:https://regexper.js.cool/ (该工具由 https://regexper.com/ 汉化而来)

基本语法对照表

字符类

字符集合 [ABC]

匹配集合中任意字符。

示例: [aeiou]

测试字符串:

glib jocks vex dwarves!

否定集合 [^ABC]

匹配不在集合中的任意字符。

示例:[^aeiou]

测试字符串:

glib jocks vex dwarves!

范围 [A-Z]

匹配给定两个字符之间(包括)的字符。

示例:[g-s]

测试字符串:

abcdefghijklmnopqrstuvwxyz

.

匹配非换行符。等同于 [^\n\r]

匹配任意 [\s\S]

匹配任意字符,包括换行符。

单词 \w

匹配任何单词字符(包括字母、数字和下划线)。等同于 [A-Za-z0-9_]

非单词 \W

与单词匹配相反。等同于[^A-Za-z0-9_]

数字字符 \d

匹配数字字符(0-9)。等同于[0-9]

非数字字符 \D

匹配非数字字符。等同于 [^0-9]

空白 \s

匹配任意空表字符,如空格、Tab 制表符、换行符。

非空白 \S

匹配不是空白字符的任意字符。

Unicode 分类 \p{L}

匹配指定 Unicode 分类的字符。

参考 MDN 文档: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes

锚点

开始 ^
结束 $
单词边界 \b

示例:s\b

测试字符串:

she sells seashells

非单词边界 \B

示例:s\B

测试字符串:

she sells seashells

转义字符

保留字符 \+

以下保留字符: +*?^$\.[]{}()|/ 需要用反斜杠进行转义。

示例: \+

测试字符串:

1 + 1 = 2

八进制转义 \000

值必须小于 255(\377)。

示例: \251

测试字符串:

RegExr is ©2014

十六进制转义 \xFF

示例: \xA9

测试字符串:

RegExr is ©2014

Unicode 转义 \uFFFF

示例:\u00A9

扩展 Unicode 转义 \u{FFFF}

支持任意数量的 16 进制数字全范围 Unicode 转义。

控制字符转义 \cI

例如:

  • \cA 字符代码为 1,SOH
  • \cI 字符代码为 9, TAB
  • \cZ 字符代码 26,SUB
制表符 \t

字符代码为 9, TAB。

换行符 \n

字符代码 10,换行符。

垂直制表符 \v

字符代码 11。

换页符 \f

字符代码 12。

回车 \r

字符代码 13。

null \0

字符代码为 0。

分组和引用

捕获分组 (ABC)

示例: (ha)+

测试字符串:

hahaha haa hah!

命名分组 ?<name>ABC
数字引用 \1

匹配捕获分组的结果。

示例:(\w)a\1

测试字符串:

hah dad bad dab gag gab

非捕获分组 (?:ABC)

不创建捕获分组获取多个组合。

示例:(?:ha)+

测试字符串:

hahaha haa hah!

查询

正向先行断言 (?=ABC)

示例: \d(?=px)

测试字符串:

1pt 2px 3em 4px

负向先行断言 (?!ABC)

示例: \d(?!px)

测试字符串:

1pt 2px 3em 4px

正向后行断言 (?<=ABC)

浏览器不支持

负向后行断言 (?<!ABC)

浏览器不支持

量词和间隔

+

匹配 1 次或多次。

*

匹配 0 次或多次。

量词 {1,3}

匹配指定次数。还可以是 {3} 匹配三次 或 {3,} 匹配三次以上。

?

匹配 0 次或 1 次。

Lazy 懒匹配 ?

贪婪惰性匹配。

示例:b\w+?

测试字符串:

b be bee beer beers

|

或。

示例:b(a|e|i)d

测试字符串:

bad bud bod bed bid

替代

匹配 $&

插入匹配的文本。

捕获分组 $1

插入指定捕获分组的结果。

前置匹配 $`
后置匹配 $'
转义$ $$
转义字符 \n

标记

不区分大小写 i

例如 /aBc/i 可以匹配 AbC

全局搜索 g
多行搜索 m
Unicode u

开启后,你可以使用 \x{FFFF} 扩展 Unicode 转义。它还会使其他转义更为严格,导致无法识别的转义(如 \j)引发错误。

置顶 y

只会从最后索引位置匹配。会忽略全局 g 标记。

Dotall s

. 将会匹配任意字符,包括换行。

通过实例进行学习

国内手机号

/^1[3-9]\d{9}$/

点击图片跳转至工具中访问。

IPv4 地址

/^(?:(?:2(?:[0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9])\.){3}(?:(?:2([0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9]))$/

URL 校验

/^[(http(s)?):\/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/i

RFC2822 邮箱地址

/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Willin 老王躺平不摆烂

感谢你这么好看还这么慷慨

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值