正则

正则验证

  var str = 'hello';var reg = /ll/;reg.test(str)//true
复制代码
  • 正则原型上有一个test方法,可以让所得正则实例调用,返回一个Boolean值 ###量词元素符 |符号|意义| |--|--| |*|表示0到多次| |+|表示1到多次| |?|表示0或者1次| |{n}|表示出现n次| |{n,}|表示出现n到多次| |{n,m}|表示出现n到m次|

特殊元字符

符号 意义
\d 匹配一个数字字符
\D 匹配非数字
\w 匹配A-Z,a-z,0-9
\W 匹配非单词字符
\s 匹配任意空字符
\b 匹配边界字符
x|y 匹配x或y
[zyx] 表示xyz任意一个
[^zyx] 匹配不是zxy任何一个
[a-z] 匹配a-z的任意一个
[^a-z] 匹配非a-z
^ 代表以什么开头
$ 代表以什么结束
. 代表任何字符(除了\n)
|表示转意
\n 换行符
?: 只匹配不捕获
  • 分组:var reg = /1(8|1)9/

    • 功能: - 1.提高优先级明确规则 - 2.分组引用 -
  • []里面大部分本来有意义的符号变成普通的字符

修饰符

符号 意义
g 全局匹配
i 忽略大小写
m 行首行尾
  • 每一个正则都有一个global,若加g则这个值为true,否则为false

正则捕获

  • exec 参数:

    • 1.result是一个数组
    • 2.数组的第一项:是正则捕获到的字符
    • 3.数组的第二项:是第一个小括号里面正则匹配到的字符(若多个小括号以此类推)
    • 4.index属性:表示正则开始匹配的位置在原字符串的索引
    • 5.input属性:表示需要匹配的字符串

reg.lastIndex

  • 1.每一个正则都有一个lastIndex 默认值为0
  • 2.lastIndex就是正则下一次匹配验证在的位置的索引

每次reg.test后,通过RegExp.$n可以捕获到第n个分组的内容

    var reg = /(\d)(\d)/g;var str = '123';reg.test(str);console.log(RegExp.$1);//1console.log(RegExp.$2);//2
复制代码

match

  • 字符串的方法match传入一个正则
  • 如果正则带g,以数组形式返回匹配到的结果
    var reg2 = /(\d{2})-(\d{2})/g;var str2 = 'a11-22b22-33';console.log(str2.match(reg2));//["11-22", "22-33"]
复制代码
  • 如果传入match的正则没有带g,那么返回效果和reg.exec是一样的
    var reg2 = /(\d{2})-(\d{2})/;var str2 = 'a11-22b22-33';console.log(str2.match(reg2));//["11-22", "11", "22", index: 1, input: "a11-22b22-33", groups: undefined]复制代码
  • 返回一个数组,第一项是正则匹配到的字符,第二项是第一个分组捕获到的字符(以此类推)和exec属性相同

replace

  • 1.第一项是正则匹配的内容
  • 2.第二项到倒数第三项是分组的内容(分组依次类推)
  • 3.倒数第二项是本次匹配成功的内容的开始索引
  • 4.倒数第一项是需要匹配的字符串
  • 5.字符串的内容能被正则匹配到几次,后面的内容执行(callback)几次就会执行几次
    var str4 = 'a11-22b22-33c'var str5 = str4.replace(/(\d{2})-(\d{2})/g,function () {console.log(arguments);});
复制代码
  • 6.每次return的内容会把匹配到的内容替换
    var str4 = 'a11-22b22-33c'var str6 = str4.replace(/(\d{2})-(\d{2})/g,function () {return 'T';})console.log(str6);//aTbTc
复制代码
  • 思考:
    //思考题//格式化时间->时间按照指定的格式拼接成新的字符串var str = "2017-08-10 15:30:45";var tempStr = "{0}年{1}月{2}日 {3}时{4}分{5}秒";//->2017年08月10日 15时30分45秒var reg1 = /\d+/g;var res1 = str.match(reg1);var reg2 = /\{(\w)\}/g;var res2 = tempStr.replace(reg2,function ($1,$2) {return res1[$2];})console.log(res2);
复制代码

转载于:https://juejin.im/post/5b9e38516fb9a05d0f16cc49

前端基础21:正则基础相关推荐

  1. 二十一. Python基础(21)--Python基础(21)

    二十一. Python基础(21)--Python基础(21) 1 ● 类的命名空间 #对于类的静态属性:     #类.属性: 调用的就是类中的属性     #对象.属性: 先从自己的内存空间里找名 ...

  2. javascript技术教程蔡敏_程序员都必掌握的前端教程之JavaScript基础教程(上)

    阅读本文约需要10分钟,您可以先关注我们,避免下次无法找到. 本篇文章成哥继续带大家来学习前端教程之JavaScript,网页的动态事件基本上都是靠它来实现的.下面我们就一起来学习内容吧! 01 Ja ...

  3. 前端网页三剑客------JavaScript基础

    前端网页三剑客------JavaScript基础 一.基础语法 1.引入方式行内JS:在标签内部编写JS代码,配合事件使用.<input type="button" val ...

  4. Web前端学习之 CSS基础二

    Web前端学习之 CSS基础二 1. 2. 主体 3. 完整代码如下所示 4. 结束语 1. /* 权重是0 */* {font-size: 35px;text-align: center;color ...

  5. 正则基础之——贪婪与非贪婪模式

    正则基础之--贪婪与非贪婪模式 转自:正则基础之--贪婪与非贪婪模式 1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模 ...

  6. 【转】正则基础之——捕获组(capture group)

    源地址 1        概述 1.1     什么是捕获组 捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用.当然,这种引用既可以是在正则表达式内部, ...

  7. Java提取文本文档中的所有网址(小案例介绍正则基础知识)

    正则表达式基础以及Java中使用正则查找 定义: 正则表达式是一些用来匹配和处理文本的字符串 正则的基础(先大致了解下) 1. 正则表达式的作用 查找特定的信息(搜索) 替换一些文本(替换) 2. 正 ...

  8. 正则基础之——反向引用

    From: http://blog.csdn.net/lxcnn/article/details/4476746 1        概述 捕获组捕获到的内容,不仅可以在正则表达式外部通过程序进行引用, ...

  9. 前端第一天 HTML基础

    前端第一天 HTML基础 1.是什么 HTML里值得记住的就几个点,第一,这东西还有自身也有结构 这东西是个超文本,可以挂载文字图片视频或者别的超文本 自身可以通过各种各样的tag进行标记,排版 给浏 ...

  10. 光纤中的多种光学模式芯径_光纤光缆的21条基础知识

    光纤是光导纤维的简写,是一种由玻璃或塑料制成的纤维,可作为光传导工具.传输原理是"光的全反射",光纤通讯有良好的特性,如:保密性.容量高.速率高等.所以光纤应用极为广泛,大致有以下 ...

最新文章

  1. window的onresize执行多次的解决方法
  2. 【深度学习】60题PyTorch简易入门指南,做技术的弄潮儿
  3. 剑指 Offer 面试题45:把数组排成最小的数——Python内置函数 map()、__lt__()、join()、sorted()
  4. 神奇,教你用随机数打印hello world
  5. IBM 安全部门 CTO:AI 必须被重新定义为“增强智能”
  6. 制打印如下所示的n行数字金字塔_关于央行数字货币的技术猜测
  7. python控制电脑唤醒_python socket发送魔法包网络唤醒开机.py
  8. java财务对账系统设计_对账系统设计
  9. 信息论与编码冯桂周林著答案_信息论与编码技术+(冯桂+林其伟+陈东华+著)+清华大学出版社+课后答案.pdf...
  10. 白话区块链 之2: 区块链技术理念
  11. Shopify速度优化
  12. 使用Breed为极路由4增强版(B70-HC5962)刷老毛Padavan固件,配置Nginx代理SSH内网映射
  13. 星空编程 小甲鱼c语言,c++快速入门(小甲鱼)
  14. 全国离婚率下跌约五成是因为它?
  15. linux下载info安装包,Linux软件包安装(rpm、yum、apt-get)
  16. 分号的html文本,html分号
  17. (转)零基础入门--中文命名实体识别
  18. 江东子弟今犹在,不见霸王卷土来-------重启编程记录征程之序
  19. 工业互联网不能没有“数据智能”心
  20. python1000行代码_写个人脸识别程序员,C可能要两千行代码,Java两百!但是Python只需二十行即可!...

热门文章

  1. 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞
  2. Linux Oracle服务启动停止脚本与开机自启动[转]
  3. NYOJ-523 亡命逃窜(三维立体的BFS)
  4. 新发传染病临床案例研究 Emerging Infectious Diseases. Clinical Case Studies
  5. VHDL/Verilog编译错误总结
  6. 北斗导航 | RAIM:改进的最优加权平均解(IOWAS)算法(接收机自主完好性监测)
  7. 神经网络 | Mask Scoring R-CNN:实例分割综述
  8. 中 找多个平面_数学一轮复习30,平面向量的概念及线性运算,三个常用结论
  9. mysql数据库 数据类型自动编号选哪个_MySQL表类型、选择合适数据类型、字符集...
  10. php拍视频上传,php视频拍照上传头像功能实现代码分享