基础
正则表达式校验工具: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 分类的字符。
锚点
开始 ^
结束 $
单词边界 \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])?$/