学习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 相关文章推荐
IE autocomplete internet explorer's autocomplete
Jun 30 Javascript
javascript实现二分查找法实现代码
Nov 12 Javascript
jQuery的运行机制和设计理念分析
Apr 05 Javascript
基于JavaScript实现网页倒计时自动跳转代码
Dec 28 Javascript
JS中常用的正则表达式
Sep 29 Javascript
js实现自定义进度条效果
Mar 15 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
Apr 25 jQuery
Angular2环境搭建具体操作步骤(推荐)
Aug 04 Javascript
浅谈Vue.nextTick 的实现方法
Oct 25 Javascript
微信小程序模板template简单用法示例
Dec 04 Javascript
Vue组件系列开发之模态框
Apr 18 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
Jun 13 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
杏林同学录(八)
2006/10/09 PHP
深入分析php中接口与抽象类的区别
2013/06/08 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
PHP钩子实现方法解析
2019/05/21 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
jQuery 性能优化指南(2)
2009/05/21 Javascript
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
python负载均衡的简单实现方法
2018/02/04 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
如何开发一个JQuery插件
2016/07/28 面试题
JAVA中运算符的分类及举例
2015/09/12 面试题
警察思想汇报
2014/01/04 职场文书
双语教学实施方案
2014/03/23 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
golang 实现并发求和
2021/05/08 Golang
js实现模拟购物商城案例
2021/05/18 Javascript
react 项目中引入图片的几种方式
2021/06/02 Javascript
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android