js常考题-正则表达式

57 阅读1分钟

创建方式:

  1. 字面量
  2. 对象创建
const reg1 = /pattrns/flag;
const reg2 = new RegExp(pattrns,flag);

flag:匹配规则

  1. i:忽视大小写
  2. 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. 基础验证 写一个正则验证中国手机号(1开头,11位数字)
let reg = /^1\d{10}$/
  1. 格式转换 用正则把"2023-10-01"转换为"01/10/2023"
"2023-10-01".replace(/(\d{4})-(\d{2})-(\d{2})/,'$3/$2/$1')
  1. 信息提取 从CSS代码中提取所有16进制颜色值: "color: #fff; background: #1a2b3c; border: red;"
str.match(/#[a-zA-Z0-9]{3-6}\b/g)
  1. 密码强度 验证密码:至少8位,包含大写字母、小写字母和数字 let reg = /^(?=.[A-Z])(?=.[a-z])(?=.*[0-9]).{8,}$/ reg.test(str)
  2. 动态正则 写函数生成匹配固定位数的数字正则: createNumRegex(4) => 匹配4位纯数字
function get(len){
let reg = new RegExp(`^\\d{ ${len} }$`)
}