学习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 object array方法使用详解
Dec 03 Javascript
商城常用滚动的焦点图效果代码简单实用
Mar 28 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
May 02 Javascript
javascript学习总结之js使用技巧
Sep 02 Javascript
AngularJS入门心得之directive和controller通信过程
Jan 25 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
Oct 30 Javascript
jQuery中extend函数简单用法示例
Oct 11 jQuery
vue项目中vue-i18n和element-ui国际化开发实现过程
Apr 25 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
Sep 27 Javascript
微信小程序错误this.setData报错及解决过程
Sep 18 Javascript
在vue中利用v-html按分号将文本换行的例子
Nov 14 Javascript
如何用JavaScipt测网速
May 09 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
德劲1107的电路分析与打磨
2021/03/02 无线电
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
用PHP实现小型站点广告管理(修正版)
2006/10/09 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
2019/04/04 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
tensorflow获取变量维度信息
2018/03/10 Python
python3实现表白神器
2019/04/09 Python
Python面向对象封装操作案例详解
2019/12/31 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
我们的节日清明节活动总结
2014/04/30 职场文书
担保书范文
2015/01/20 职场文书
学雷锋日活动总结
2015/02/06 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
Python torch.flatten()函数案例详解
2021/08/30 Python