Skip to content

正则表达式基础

元字符

正则表达式说明
\d匹配任意单个数字
\D匹配\d规则之外的任意单个字符
\w匹配任意单个字母数字下划线
\W匹配\w之外的任意单个字符
\s匹配单个空格
\n匹配单个换行符
.匹配任意单个字符(换行符外)
.只匹配.

字符范围匹配

正则表达式说明
A精准匹配单个字符
x|y允许出现的2个字符
[xyz]字符集合,允许出现集合内的任意单个字符
[a-z]字符范围
[^0-9]集合内字符不允许出现

多次重复匹配

正则表达式说明
A精准n次匹配
A最少出现n次
\d约定出现的最少次数和最大次数
\d*0到无限次
\d+只少出现1次
\d?0或1次

定位匹配

正则表达式说明
^A头匹配
A$尾匹配
^A$全字匹配

修饰符

修饰符作用示例
i不区分大小写/a/i 匹配 A 或 a
g全局匹配(匹配所有结果)'aA'.match(/a/gi) → ['a', 'A']
m多行模式(^ 和 $ 匹配行首/行尾)/^a/m 匹配每行开头的 a

贪婪模式

在满足条件的情况下尽可能多匹配到字符串

示例:111222333 正则:\d{6,8} 结果: 111222333

非贪婪模式

在满足条件的情况下尽可能少匹配到字符串。需要在数量后面加'?'

示例:111222333 正则:\d{6,8}? 结果: 111222

表达式分组

分组将'正则'分组为多个自表达式

前瞻表达式

正向前瞻(?=)

解释:从左→右匹配符合的

例子

js
const reg = /\d(?=[a-z])/g
const str = '1d2c33b55q'
console.log(str.replace(reg, '*')) // 打印*d*c3*b5*q

\d(?=[a-z])正则含义: 先看下数字后面是否是字母,如果是,就把满足条件的数字替换掉

负向前瞻(?!)

解释:从左→右匹配不符合的

例子

js
const reg = /\d(?![a-z])/g
const str = '1d2c33b55q'
console.log(str.replace(reg, '*')) // 打印1d2c*3b*5q

\d(?![a-z])正则含义: 先看下数字后面是否是字母,如果不是,就把满足条件的数字替换掉

使用场景

  • 检测密码是否同时包含字母和数字
js
const reg = /^(?=.*\d)(?=.*[a-z])[0-9a-z]{3,6}$/i
console.log(reg.test('dsx12')) // true
console.log(reg.test('da')) // false
console.log(reg.test('121')) // false

苏ICP备20040768号