学习JavaScript正则表达式


Posted in Javascript onNovember 13, 2015

JavaScript正则表达式学习:

有个在线调试正则的工具。下面的所有示例代码,都可以在codepen上查看到。

1.创建正则表达式

var re = /ab+c/; //方式一 正则表达式字面量

var re = new RegExp("ab+c"); //方式二 RegExp对象的构造函

1)正则表达式字面量在脚本加载后编译。若你的正则表达式是常量,使用这种方式可以获得更好的性能。

2)使用构造函数,提供了对正则表达式运行时的编译。当你知道正则表达式的模式会发生改变, 或者你事先并不了解它的模式或者是从其他地方(比如用户的输入),得到的代码这时比较适合用构造函数的方式。

2.正则表达式中的特殊字符

\    ^    $    *    +    ?    .    (x)    (?:x)    x(?=y)    x(?!y)    x|y    {n}  

{n,m}    [xyz]    [^xyz]    [\b]    \b    \B    \cX    \d    \D    \f    \n    \r   

\s    \S    \t    \v    \w    \W    \n    \0    \xhh    \uhhhh   

3.正则表达式中的方法

有6个,分别是exec、test、match、search、replace和split

exec和test的语法都是regexObj调用,match、search、replace和split的语法都是string调用。

exec:

方法为指定的一段字符串执行搜索匹配操作。它的返回值是一个数组或者 null。语法如下:regexObj.exec(str)

示例代码:

var re = /quick\s(brown).+?(jumps)/ig;
var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');
返回结果:

学习JavaScript正则表达式

test:

一个在字符串中测试是否匹配的RegExp方法,它返回true或false。语法如下:regexObj.exec(str) 

match:

一个在字符串中执行查找匹配的RegExp方法,它返回一个数组或者在未匹配到时返回null。

与exec略有不同,首先是调用方式,math是由字符串调用,而exec是由RegexObj调用。

其次,如果表达式中有“g”标记,那么返回一个匹配的字符串数组,如果没有就会和exec返回的一样。下面这个demo就是有“g”。语法如下:str.match(regexp)

示例代码:

var re = /quick\s(brown).+?(jumps)/ig;
var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');

返回结果:

学习JavaScript正则表达式

search:

一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。语法如下:str.search(regexp)

例如上面的示例代码如果是调用search,返回数据就是4。

replace:

一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。语法如下:str.replace(regexp|substr,newSubStr|function[,flags])

var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var result = str.replace(re, "$2, $1");

返回的结果将是:“Smith, John”

split:

一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法。语法如下:str.split([separator[,limit]])

limit就是限制分割后的数组中的个数。下面的是一个demo,但是表达式中有一个是加了括号,一个没加,返回的数据是不一样的。

示例代码:

var re = /(\d)/;
var result = 'Hello 1 word. Sentence number 2.'.split(re);
console.log(result);
var re = /\d/;
var result = 'Hello 1 word. Sentence number 2.'.split(re);
console.log(result);

返回结果:

学习JavaScript正则表达式

4.正则表达式执行返回信息

var myRe = new RegExp("d(b+)d", "g");
var myArray = myRe.exec("cdbbdbsbz");
console.log(myArray);

代码中返回的结果如下:

学习JavaScript正则表达式

学习JavaScript正则表达式

5.正则表达式标志

学习JavaScript正则表达式

var re = /\w+\s/g;//表达式一
var re = new RegExp("\\w+\\s", "g");//表达式二
var str = "fee fi fo fum";
var myArray = str.match(re);
console.log(myArray);

表达式一和表达式二返回的结果是一样的。都是下面的那个数组:

学习JavaScript正则表达式

 以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
Opacity.js
Jan 22 Javascript
优秀js开源框架-jQuery使用手册(1)
Mar 10 Javascript
jquery网页元素拖拽插件效果及实现
Aug 05 Javascript
js中的数组Array定义与sort方法使用示例
Aug 29 Javascript
JS 实现点击a标签的时候让其背景更换
Oct 15 Javascript
基于Bootstrap分页的实例讲解(必看篇)
Jul 04 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
May 07 Javascript
webpack自动打包和热更新的实现方法
Jun 24 Javascript
JavaScript 继承 封装 多态实现及原理详解
Jul 29 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
Mar 25 Javascript
JavaScript使用prototype属性实现继承操作示例
May 22 Javascript
详解vue 组件
Jun 11 Javascript
jquery实现九宫格大转盘抽奖
Nov 13 #Javascript
jquery动画效果学习笔记(8种效果)
Nov 13 #Javascript
javascript:void(0)点击登录没反应怎么解决
Nov 13 #Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
Nov 13 #Javascript
每天一篇javascript学习小结(Date对象)
Nov 13 #Javascript
有关Promises异步问题详解
Nov 13 #Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
Nov 13 #Javascript
You might like
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
JS加jquery简单实现标签元素的显示或隐藏
2013/09/23 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
jQuery实现点击小图显示大图代码分享
2015/08/25 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
实例讲解Python中的私有属性
2014/08/21 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
对Python3中列表乘以某一个数的示例详解
2019/07/20 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
python mock测试的示例
2020/10/19 Python
python 怎样进行内存管理
2020/11/10 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
小区的门卫岗位职责
2014/10/01 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
Golang bufio详细讲解
2022/04/21 Golang