一次记住JavaScript的6个正则表达式方法


Posted in Javascript onFebruary 22, 2018

首先6这个具象的数字可以帮助我们整体记忆了。

范围

js中有两个类可以让正则发挥作用

一次记住JavaScript的6个正则表达式方法

创建

var re = /ab+c/

方式一:正则表达字面量,这种直接是常量的表示用法可以让js解析器提高性能

var re = new RegExp('ab+c')

方式二:构造函数,这种方式可以在runtime的时候动态确定正则是什么,更加灵活

常用特殊字符

来记忆一些常用特殊字符,这个是正则本身的范畴了,是不是总觉得记不住?其实我也记不住,每次都是去搜索和online验证来完成一些任务。我也困恼过,其实最后还是因为自己写的少吧,唯手熟尔。。。下面的总结不写具体内容,只列出具体特殊字符和分类,可以尝试一下说出他们的意义,我觉得比看表格更有利于记忆。。。

  • 匹配量的:* + ? {n} {n,} {n,m} .
  • 匹配位置的:^ $
  • 匹配并且需要支持分组的时候需要括号来包裹:(匹配的模式)
  • 匹配条件的:|
  • 匹配集合的:[]
  • 匹配非集合的:[^]

还有大量的由\和字母组成的特殊含义的匹配模式,这些用到的时候查询就可以了,没有必要记住,其实我是记不住。。。

例子

例子是最好的老师。。。。 例子来源于MDN

我想得到匹配后的数组

var myRe = /d(b+)d/g; 
myRe.exec('cdbbdbsdbdbz') // ["dbbd", "bb", index: 1, input: "cdbbdbsdbdbz"] 
myRe.exec('cdbbdbsdbdbz') // ["dbd", "b", index: 7, input: "cdbbdbsdbdbz"] 
myRe.exec('cdbbdbsdbdbz') // null

注意对于每个正则对象的exec每次调用都只返回一个匹配,如果需要拿到全部匹配就需要while循环获取,循环结束标志是返回值为null

'cdbbdbsdbdbz'.match(/d(b+)d/g) // ["dbbd", "dbd"] 
'cdbbdbsdbdbz'.match(/d(b+)d/) // ["dbbd", "bb", index: 1, input: "cdbbdbsdbdbz"]

string的match挺奇怪的,如果是global匹配则出所有匹配的数组,如果不是,则出第一个匹配的字符串,以及相应的捕获内容

var str = 'hello world!'; 
var result = /^hello/.test(str); // true 
'cdbbdbsdbdbz'.search(/d(b+)d/) // 1 
'xxx'.search(/d(b+)d/) // -1 没有匹配 
var names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand '; 
var re = /\s*;\s*/; 
var nameList = names.split(re); 
// [ "Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand " ]
var re = /apples/gi; 
var str = 'Apples are round, and apples are juicy.'; 
var newstr = str.replace(re, 'oranges'); 
// // oranges are round, and oranges are juicy.

我想得到是否匹配

var str = 'hello world!'; 
var result = /^hello/.test(str); // true

我只想得到第一次匹配的位置

'cdbbdbsdbdbz'.search(/d(b+)d/) // 1 
'xxx'.search(/d(b+)d/) // -1 没有匹配

我想按照匹配拆分字符串

var names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand '; 
var re = /\s*;\s*/; 
var nameList = names.split(re); 
// [ "Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand " ]

我想按照匹配覆盖字符串

var re = /apples/gi; 
var str = 'Apples are round, and apples are juicy.'; 
var newstr = str.replace(re, 'oranges'); 
// // oranges are round, and oranges are juicy.

这个replace方法的用法着实比较多,只放了最基础用法,当有需求的时候再查就好了,整体有概念了再实践比强行记忆要好吧~

总结

以上所述是小编给大家介绍的一次记住JavaScript的6个正则表达式方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js getElementsByTagName的简写方式
Jun 27 Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
Jul 27 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
Nov 26 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
Jul 24 Javascript
React数据传递之组件内部通信的方法
Dec 31 Javascript
基于vue中解决v-for使用报红并出现警告的问题
Mar 03 Javascript
vue+express 构建后台管理系统的示例代码
Jul 19 Javascript
jQuery实现的别踩白块小游戏完整示例
Jan 07 jQuery
ES6函数实现排它两种写法解析
May 13 Javascript
javascript开发实现贪吃蛇游戏
Jul 31 Javascript
浏览器JavaScript调试功能无法使用解决方案
Sep 18 Javascript
利用CDN加速react webpack打包后的文件详解
Feb 22 #Javascript
node内置调试方法总结
Feb 22 #Javascript
详解vue移动端日期选择组件
Feb 22 #Javascript
webpack 单独打包指定JS文件的方法
Feb 22 #Javascript
webpack中使用iconfont字体图标的方法
Feb 22 #Javascript
微信小程序之圆形进度条实现思路
Feb 22 #Javascript
webpack下实现动态引入文件方法
Feb 22 #Javascript
You might like
是否存在第一台收音机的说法
2021/03/01 无线电
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
2020/05/12 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
Vue组件和Route的生命周期实例详解
2018/02/10 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
Python三元运算实现方法
2015/01/12 Python
python 批量修改/替换数据的实例
2018/07/25 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
服务行业个人求职的自我评价
2013/12/12 职场文书
加强作风建设心得体会
2014/10/22 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
检讨书格式
2015/01/23 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
企业法人代表证明书
2015/06/18 职场文书
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android
Python Django获取URL中的数据详解
2021/11/01 Python