正则 详解 包括小案例 可以做复习笔记和查看小文档

密码验证:

var reg = /^(?=\D+\d)(?=.*[A-Z])[a-zA-Z0-9]{8-16}$/;

正则表达式修饰符

g i m
g // 全局匹配
i // 不区分大小写
m // 多行匹配 \n 产生的换行

reg 返回正则表达式基础

var reg = /a/g
console.log(new reg.constructor());
console.log(reg.compile());

exec(“str”) 在字符串中找到对应正则的内容 index为下标开始的位置 全局匹配无效

var reg = /a/g
console.log(reg.exec("bacead"));
// outPut
// ['a', index: 1, input: 'bacead', groups: undefined]

test(“str”) 是否可以在字符串中找到满足条件的内容 返回true或false

 var reg = /a/gconsole.log(reg.test("bbcebd")); // outPut flaseconsole.log(reg.test("bacebd")); // outPut true

console.dir(reg)

 outPut=>{/a/gdotAll: falseflags: "g"global: truehasIndices: falseignoreCase: falselastIndex: 0multiline: falsesource: "a"sticky: falseunicode: false[[Prototype]]: Object}// source 表示 正则内容// flags  对应正则修饰符

字符串方法 replace() search() match() split()

// search 方法 可以按照条件查找
var str = "1asdfacdf";
var index1 = str.search("a");
var index2 = str.search(/a/g);
console.log(index); // 1 1// 扩展 a后面有c的索引
var str = "1asdfacsdf";
var index = str.search(/a(?=c)/g);
console.log(index); // 5// split(str) 截取
console.log("a|b&c|d&e".split("|")); // out ['a', 'b&c', 'd&e']
console.log("a|b&c|d&e".split(/[|&]/)); // ['a', 'b', 'c', 'd', 'e']
console.log("http://www.163.com/news/nsl/index.html?a=1&b=2".split(/(?<=:\/\/.*?)\//));// replace(str) 方法
// 替换所有的a 变成0
var str = "adfnsfasdafa";
str = str.replace(/a/g, "0");
console.log(str);// 可以替换多个,可以每次替换时执行后面的函数,函数内返回return结果会替换内容
str = str.replace(/a/g, (item, index)=>{console.log(item, index);
});
console.log(str);// match(str) 如果没有全局查找,没有群组, 方法等同于正则的exec
// 返回满足正则全部查找内容
console.log("adfnsfasdafa".match(/a/g)); // (4) ['a', 'a', 'a', 'a']
// 满足返回群组的内容
console.log("4[ac]".match(/(\d)\[([a-z]*)]/));

元字符

  • 定义: var reg = /a/; a 就是元字符

一、 通配符

  1. “.” 匹配任意一个字符

    console.log(“abacad”.match(/a./g));

    // outPut (3) [‘ab’, ‘ac’, ‘ad’]

  2. “” 转义字符 取消元字符原有的作用 恢复为字符特征

    console.log(“aba.c.a.dac”.match(/a./g));
    // outPut (2) [‘a.’, ‘a.’]

  3. “[]” 内可以满足一个字符串的替代 [内的 “.” 不在具有通配符的作用]

    console.log(“abacad”.match(/a[bd]/g));
    // outPut (2) [‘ab’, ‘ad’]

  4. [] 内的 - 表示多少到多少

    console.log(“a1a2a3a4a5a6”.match(/a[0-9]/g));
    console.log(“a1a2a3a4a5a6”.match(/a[a-zA-Z]/g));
    // 不要数字 ^ 在中括号中 只能写在第一位, 若是卸载非第一位 则是字符^
    console.log(“a1a2a3a4a5agavaca6”.match(/a[^0-9]/g));
    // OutPut (3)[‘ag’, ‘av’, ‘ac’]

  5. \w => [a-zA-Z0-9_] 任意一个字符

  6. \W => [^a-zA-Z0-9_] 除了数字字母下划线以外的其他字符

  7. \d => [0-9] 任意数字

  8. \D => [^0-9] 任意非数字

  9. \s => 空白字符

  10. \S => 非空白字符

练习 匹配YYYY-MM-DD
\d\d\d\d-\d\d-\d\d ???

重复 {n};

console.log("aaaaabbb".match(/a{4}/g)); // 匹配4个次
console.log("aaaaabbb".match(/a{2}/g)); // 匹配4个次
console.log("aaaaabbb".match(/a{1}/g)); // 匹配4个次
console.log("aaaaabbb".match(/a{0}/g)); // 匹配4个次
console.log("acacacacacbbb".match(/ac{4}/g)); // 匹配4个次
console.log("acacacacacbbb".match(/(ac){4}/g)); // 匹配4个次
OUT{['aa', 'aa']2.重复.js:1 ['aaaa']2.重复.js:2 (2) ['aa', 'aa']2.重复.js:3 (5) ['a', 'a', 'a', 'a', 'a']2.重复.js:4 (9) ['', '', '', '', '', '', '', '', '']2.重复.js:5 null2.重复.js:6 ['acacacac']
}

贪婪匹配 {最小重复次数, 最大重复次数} “?”表示 {} “*” 表示{0,} “+” {1,}

console.log("aaaaaasdasaaaaaaaaaaaa".match(/a{2,5}/g)); // (4) ['aaaaa', 'aaaaa', 'aaaaa', 'aa'] 优先匹配最大的
console.log("aaaaaasdasaaaabbaaaaaaaa".match(/a{2,5}b{2,5}/g)); // ['aaaabb']  优先匹配最大的
console.log("aaaaaasdabsaabbaaaabbaaaaaa".match(/a{2,5}b{2,5}/g)); // ['aabb', 'aaaabb']优先匹配最大的
console.log("aaaaaasdasaabbbaababbbbaaaaaabbbbba".match(/a{2,5}b{2,5}/g)); // ['aabbb', 'aaaaabbbbb'] 优先匹配最大的console.log("afdsczvqadfafafafaaa".match(/a{1,}/g))// 表示匹配无穷个a

\D+\d 表示 非数字起头,但是后续字符串中至少由一位数字

.*[A-Z] .是通配符 *{0,} [a-z] 在整个字符串中必须有一个小写字母

.*[A-Z] 表示真个字符串中必须包含一个大写字母

正则基础学习1 这俩天补上正则全部内容,让你简单的学会正则,欢迎收藏当文档相关推荐

  1. 数据挖掘基础学习一:VMware虚拟机Ubuntu上安装Python和IPython Notebook(Jupyter Notebook)完整步骤及需要注意的问题(以ubuntu-18.04.3为例)

    数据挖掘基础学习一:VMware虚拟机Ubuntu上安装Python和IPython Notebook(Jupyter Notebook)完整步骤及需要注意的问题 (以ubuntu-18.04.3-d ...

  2. vscode python 自动补全_利用CodeBERT,这个VS Code扩展可以自动生成Python文档字符串...

    机器之心报道 编辑:魔王 该扩展利用可处理编程语言和自然语言的预训练模型 CodeBERT,实现快速生成 Python 文档字符串的功能. Visual Studio Code(简称 VS Code) ...

  3. 小白零基础学习Java开发入门教程奉上,希望对你有所帮助!

    "持久和新"是编程语言方面对Java的适当评估. 想要进入互联网行业,想转向编程,Java无疑是一个非常普遍的选择. 但是,Java毕竟是一种编程语言,并且仍然存在一些技术障碍.如 ...

  4. 零基础学习游戏建模多久能出师?3D建模师告诉你如何有效的学会建模

    如果真正零基础没有一点美术基础的人,到能胜任工作,时间约为7个月到1年左右,为什么时间会这么长?因为期间不光学建模,还需要大量的时间去锻炼美术能力,上进一些的同学可能6-7个月就可以出师了,而平日懒散 ...

  5. Spring Boot基础学习笔记14:实现文件上传功能

    文章目录 零.学习目标 一.文件上传概述 二.实现文件上传功能 (一)创建Spring Boot项目 (二)整合Bootstrap (三)编写文件上传页面 (四)编写项目配置文件 (五)编写文件上传控 ...

  6. 【CANoe之CAPL基础学习_如何正常在总线上中发送CAN消息】

    前言 本文适合于新手使用CANoe进行基础CAPL编程.基于CANoe的VN1640在CAN网络上进行发送CAN报文,实现CAN总线报文的控制.本文主要通过使用CANoe模拟发送一条周期型报文.文章内 ...

  7. 无基础怎么学习java虚拟机,0基础学习Java ——Java 虚拟机结构(上)

    马上注册,结交更多好友,享用更多功能^_^ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 回忆一遥远 于 2017-8-16 07:35 编辑 Class 文件格式 Java 编 ...

  8. 国家开放大学计算机应用基础模块3客观题,国家开放大学《计算机应用基础》考试与答案形考任务模块3模块3Excel2010电子表格系统—客观题答案-20210603091413.docx-原创力文档...

    WORD格式可以任意编辑Excel2010上机操作题(共5 题, 4 分 / 题)1. 创建如下工作表,并保存为EXLT1.xlsx文件:接着完成以下操作:( 1)用填充柄自动填充"值日时间 ...

  9. java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释

    ***对象作为参数传递*** class passparam { int x;   public static void main(String[] args)   { passparam obj = ...

最新文章

  1. [转] GIS算法源码集合
  2. ThreadLocal父子线程传递实现方案
  3. 内联函数和宏定义的区别
  4. linux中如何自定义命令行,linux终端颜色和命令行自定义
  5. [洛谷2397]yyy loves Maths VI
  6. 如何找到自身产品优势?
  7. 递归函数与二分查找算法
  8. C++编程导出XVID编码的AVI视频
  9. CSS盒子模型、Boder基础
  10. BestCoder Round #16
  11. 数据库无法连接的几种情况
  12. Unity3D中 使模型变成变透明
  13. 华为云服务器无法使用smtp发送邮件
  14. 数据仓库 OLAP
  15. styleSheets
  16. 设编号为1,2,… n的n个人围坐一圈,约定编号为k(1=k=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个
  17. OpenI/O 2020 启智开发者大会!启智筑梦远航,千万激励奖金助力开发者“智”造更多新可能
  18. ICC II 3 从create_ndm开始design setup
  19. 02-蘑菇街爬虫mw-sign参数破解
  20. 个人信息规范名称和收集规则参考

热门文章

  1. Keras笔记(一)关于Keras模型
  2. Delta Lake在Soul的应用实践
  3. 蚂蚁金服大规模分布式事务实践和开源历程
  4. XGBoost 与 Spark 在广告排序中的应用
  5. python将某个列表按元素值分成多个子列表
  6. 十年Java路,和大家来谈谈系统架构
  7. python中global 和 nonlocal 的作用域
  8. 洛谷P1082 同余方程 数论
  9. oracle数据导入导出
  10. Android屏幕尺寸适配注意事项