JS正则表达式常用函数汇总
写代码时,尤其是为表单添加验证时,经常会用到正则表达式,这时候,一堆相关的函数就浮现出来了,由于比较类似,所以经常不能快速选择最合适的函数,对于懒癌前端,更得马上上网百度。为了使用时快速找到最合适的函数,这里将这些常用函数汇总一下,并看看如何记忆最方便。
首先,分成两块记忆:
1、RegExp对象的 3 个方法:test()、exec()、compile()
2、String对象的4个方法:search()、replace()、split()、match()
记忆大法:
reg.test(str)
reg.exec(str)
reg.compile(reg,modifier)
stringObject.search(regexp/str)
stringObject.match(regexp/str)
stringObject.replace(regexp/str,replacement)
stringObject.split(regexp/str)
先说第一部分:
test() 最常用,如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。
compile() 感觉很少用到,看字面意思,就是编译正则对象,用于在脚本执行过程中编译正则表达式,
也可以改变和重新编译正则表达式。
exec()这个方法极其恶心,下面的说明,扫一眼就行了,还是看示例代码舒服。
该方法属于一个比较复杂的方法,它接受一个字符串,返回的是一个数组,数组中第0个元素是匹配的子字符串,第二个元素是正则中的第一个子分组匹配的结果(如果有子分组,即正则中存在用圆括号括起来的分组),第三个是正则中第二个子分组匹配的结果(如果有第二个子分组)...以此类推,如果没有正则子分组,那么该数组长度仅仅为1,就是匹配到的那个子字符串。同时,返回的这个数组同时还是一个对象,它拥有两个属性,分别为index表示当前匹配到的子字符串所处的位置,input属性表示被匹配的原始字符串。最后,该方法中的正则对象如果不是全局匹配,即没有g修饰符,则每次调用只会从字符串开头处匹配第一个结果,且每次调用结果都是一样的。只有指定为全局匹配,才能够按照从左往右依次去匹配,每次调用匹配一个结果,正则对象的lastIndex属性前进到本次匹配的末尾位置,下回再调用的时候,会从lastIndex处开始匹配而不是从头匹配。
再看第二部分:
search() 用来查找第一次匹配的子字符串的位置,如果找到就返回一个number类型的index值,否则返回-1,它返回的只是第一次匹配的位置。
replace() 太简单,不讲
split() 用来将一个字符串拆分成一个数组,它接受一个正则或者子字符(串)作为参数,返回一个数组,简单情况下,我们不需要使用正则,只有在字符串拆分规则不统一的情况下才需要使用正则,如下:
match() 该方法接受一个正则作为参数,用来匹配一个字符串,它的输出结果在不是全局匹配的情况下和exec方法的结果一致即一个数组并带有额外的属性,如果采用全局匹配,则不返回任何和其被匹配字符串相关的信息,只返回匹配的结果。
写到这里快吐了。。。。。。。。不想看 exec 方法,太恶心了。。。。
发了那么多电影相关的文章,也该写写前端方面的文章了,今天终于认真写了两篇。
交流技术?加作者微信吧
- Mybatis【缓存、代理、逆向工程】
- 关于db_files和maxdatafiles的问题(r4笔记第31天)
- 了解一下CPU 第一篇(r4笔记第30天)
- Java中的String类能否被继承?为什么?
- Mybatis【与Spring整合】
- 使用logon trigger完成动态的session跟踪(r4笔记第29天)
- struts2关于action拦截器使用方法 现记录如下
- Struts2【入门】
- 通过ORA错误反思sql语句规范(r4笔记第41天)
- 算法01 七大排序之:冒泡排序和快速排序
- 自下向上的编写容易阅读的代码(上)
- Hibernate【inverse和cascade属性】知识要点
- 算法02 七大排序之:直接选择排序和堆排序
- Hibernate【映射】续篇
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 微服务开源框架TARS 之 框架服务解析
- dotnet 在 UOS 国产系统上使用 Xamarin Forms 创建 xaml 界面的 GTK 应用
- K8s集群上使用Helm部署2.4.6版本Rancher集群
- VMware下安装CentOS
- leetcode多线程之按序打印
- 表格的实现
- 使用 Node.js 定制你的技术雷达:中篇
- 数据库PostrageSQL-在Windows上从源代码安装
- Redis的过期策略和内存淘汰策略及LRU算法详解
- 群晖Docker安装GitLab及腾讯企业邮件配置踩坑记录
- 基于docker搭建DNSmasq
- Django-admin配置和显示图标
- redis学习(八)
- 【剑指Offer】打印从1到最大的n位数
- 面试题-List之ArrayList、Vector、SynchronizedList、CopyOnWriteArrayList