创建方式:
- 字面量
- 对象创建
const reg1 = /pattrns/flag;
const reg2 = new RegExp(pattrns,flag);
flag:匹配规则
- i:忽视大小写
- g:匹配全局,贪婪匹配
元字符:
-
^ :字符串开头
-
$ :字符串结束
-
\d :数字
-
. :任意字符
-
\w :单词字符
-
\s :空白符
-
\b :单词边界 量词:
-
- :一次或多次
-
- :0次或多次
-
? :0次或1次
-
{n}具体几次
-
{n,}
-
{n,m}
单字符
- [abc]
- [^abc]
- [a-z]
断言 (?=...)
常用方法: reg.test()//测试字符串是否符合结果 reg.exec()//查找返回结果 string.match()//获取匹配结果数组 string.replace(reg,"Hi")//将string中的reg替换成"Hi"
练习题
- 基础验证 写一个正则验证中国手机号(1开头,11位数字)
let reg = /^1\d{10}$/
- 格式转换 用正则把"2023-10-01"转换为"01/10/2023"
"2023-10-01".replace(/(\d{4})-(\d{2})-(\d{2})/,'$3/$2/$1')
- 信息提取 从CSS代码中提取所有16进制颜色值: "color: #fff; background: #1a2b3c; border: red;"
str.match(/#[a-zA-Z0-9]{3-6}\b/g)
- 密码强度 验证密码:至少8位,包含大写字母、小写字母和数字 let reg = /^(?=.[A-Z])(?=.[a-z])(?=.*[0-9]).{8,}$/ reg.test(str)
- 动态正则 写函数生成匹配固定位数的数字正则: createNumRegex(4) => 匹配4位纯数字
function get(len){
let reg = new RegExp(`^\\d{ ${len} }$`)
}