前端基础21:正则基础
正则
正则验证
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:正则基础相关推荐
- 二十一. Python基础(21)--Python基础(21)
二十一. Python基础(21)--Python基础(21) 1 ● 类的命名空间 #对于类的静态属性: #类.属性: 调用的就是类中的属性 #对象.属性: 先从自己的内存空间里找名 ...
- javascript技术教程蔡敏_程序员都必掌握的前端教程之JavaScript基础教程(上)
阅读本文约需要10分钟,您可以先关注我们,避免下次无法找到. 本篇文章成哥继续带大家来学习前端教程之JavaScript,网页的动态事件基本上都是靠它来实现的.下面我们就一起来学习内容吧! 01 Ja ...
- 前端网页三剑客------JavaScript基础
前端网页三剑客------JavaScript基础 一.基础语法 1.引入方式行内JS:在标签内部编写JS代码,配合事件使用.<input type="button" val ...
- Web前端学习之 CSS基础二
Web前端学习之 CSS基础二 1. 2. 主体 3. 完整代码如下所示 4. 结束语 1. /* 权重是0 */* {font-size: 35px;text-align: center;color ...
- 正则基础之——贪婪与非贪婪模式
正则基础之--贪婪与非贪婪模式 转自:正则基础之--贪婪与非贪婪模式 1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模 ...
- 【转】正则基础之——捕获组(capture group)
源地址 1 概述 1.1 什么是捕获组 捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用.当然,这种引用既可以是在正则表达式内部, ...
- Java提取文本文档中的所有网址(小案例介绍正则基础知识)
正则表达式基础以及Java中使用正则查找 定义: 正则表达式是一些用来匹配和处理文本的字符串 正则的基础(先大致了解下) 1. 正则表达式的作用 查找特定的信息(搜索) 替换一些文本(替换) 2. 正 ...
- 正则基础之——反向引用
From: http://blog.csdn.net/lxcnn/article/details/4476746 1 概述 捕获组捕获到的内容,不仅可以在正则表达式外部通过程序进行引用, ...
- 前端第一天 HTML基础
前端第一天 HTML基础 1.是什么 HTML里值得记住的就几个点,第一,这东西还有自身也有结构 这东西是个超文本,可以挂载文字图片视频或者别的超文本 自身可以通过各种各样的tag进行标记,排版 给浏 ...
- 光纤中的多种光学模式芯径_光纤光缆的21条基础知识
光纤是光导纤维的简写,是一种由玻璃或塑料制成的纤维,可作为光传导工具.传输原理是"光的全反射",光纤通讯有良好的特性,如:保密性.容量高.速率高等.所以光纤应用极为广泛,大致有以下 ...
最新文章
- window的onresize执行多次的解决方法
- 【深度学习】60题PyTorch简易入门指南,做技术的弄潮儿
- 剑指 Offer 面试题45:把数组排成最小的数——Python内置函数 map()、__lt__()、join()、sorted()
- 神奇,教你用随机数打印hello world
- IBM 安全部门 CTO:AI 必须被重新定义为“增强智能”
- 制打印如下所示的n行数字金字塔_关于央行数字货币的技术猜测
- python控制电脑唤醒_python socket发送魔法包网络唤醒开机.py
- java财务对账系统设计_对账系统设计
- 信息论与编码冯桂周林著答案_信息论与编码技术+(冯桂+林其伟+陈东华+著)+清华大学出版社+课后答案.pdf...
- 白话区块链 之2: 区块链技术理念
- Shopify速度优化
- 使用Breed为极路由4增强版(B70-HC5962)刷老毛Padavan固件,配置Nginx代理SSH内网映射
- 星空编程 小甲鱼c语言,c++快速入门(小甲鱼)
- 全国离婚率下跌约五成是因为它?
- linux下载info安装包,Linux软件包安装(rpm、yum、apt-get)
- 分号的html文本,html分号
- (转)零基础入门--中文命名实体识别
- 江东子弟今犹在,不见霸王卷土来-------重启编程记录征程之序
- 工业互联网不能没有“数据智能”心
- python1000行代码_写个人脸识别程序员,C可能要两千行代码,Java两百!但是Python只需二十行即可!...
热门文章
- 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞
- Linux Oracle服务启动停止脚本与开机自启动[转]
- NYOJ-523 亡命逃窜(三维立体的BFS)
- 新发传染病临床案例研究 Emerging Infectious Diseases. Clinical Case Studies
- VHDL/Verilog编译错误总结
- 北斗导航 | RAIM:改进的最优加权平均解(IOWAS)算法(接收机自主完好性监测)
- 神经网络 | Mask Scoring R-CNN:实例分割综述
- 中 找多个平面_数学一轮复习30,平面向量的概念及线性运算,三个常用结论
- mysql数据库 数据类型自动编号选哪个_MySQL表类型、选择合适数据类型、字符集...
- php拍视频上传,php视频拍照上传头像功能实现代码分享