学习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 相关文章推荐
JavaScript使用prototype定义对象类型(转)[
Dec 22 Javascript
Dojo 学习笔记入门篇 First Dojo Example
Nov 15 Javascript
JavaScript中的slice()方法使用详解
Jun 06 Javascript
javascript类型系统 Window对象学习笔记
Jan 07 Javascript
javascript实现表单验证
Jan 29 Javascript
js自定义弹框插件的封装
Aug 24 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
Aug 21 Javascript
Vue.js递归组件构建树形菜单
Dec 24 Javascript
vue自定义一个v-model的实现代码
Jun 21 Javascript
Vue SPA单页应用首屏优化实践
Jun 28 Javascript
vue-cli3.0配置及使用注意事项详解
Sep 05 Javascript
如何通过shell脚本自动生成vue文件详解
Sep 10 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 MYSQL中插入当前时间
2008/04/06 PHP
php程序内部post数据的方法
2015/03/31 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
JS实现复制功能
2017/03/01 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
小程序实现密码输入框
2020/11/16 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
python英语单词测试小程序代码实例
2019/09/09 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
运动会广播稿100字
2014/01/11 职场文书
担保书格式及范文
2014/04/01 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
青春飞扬演讲稿
2014/09/11 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
防震减灾主题班会
2015/08/14 职场文书
Python实现智慧校园自动评教全新版
2021/06/18 Python
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis