详解JavaScript正则表达式(三)

原创 2017年05月05日 22:41:06

本文是JavaScript正则表达式的第三篇文章,若是对正则表达式陌生的话,可以看我之前的两篇文章。
详解正则表达式(一)
详解正则表达式(二)

贪婪模式和非贪婪模式

1、贪婪模式

在匹配成功的情况下,尽可能多的匹配。而JavaScript默认的就是贪婪模式。话不多说,直接上例子。

var str = "12345";
var reg = /\d{2,4}/;
var res = str.replace(reg,"X");
console.log(res);

输出结果是:X5。
分析:首先reg正则式表达的意思是匹配2至4个数字,但是看输出的结果可以发现,匹配的是4个数字,这就是贪婪模式匹配。

2、非贪婪模式

就是让正则表达式尽可能少的匹配,但是前提是匹配成功。
做法是在量词的后面加上?即可。(注意这里是英文输入法下面的?号)

var str = "12345";
var reg = /\d{2,4}?/;
var res = str.replace(reg,"X");
console.log(res);

输出结果是:X345
分析:注意看reg正则式的量词后面有一个?,表示是非贪婪匹配。

分组

比如,如果你想匹配三个”name”这个字符串,这里就要使用到分组以及量词的概念。

先看一下直接使用name{3},效果如下图:
这里写图片描述
可以看到是“e”重复了三次。要想让整个name重复三次,需要这样书写(name){3}。
这里写图片描述

捕获组

捕获组就是把正则表达式中字表达式匹配的内容,保存到内存中以数字编号或显示命名的组里,方便后面使用。可以在正则表达式内部使用,也可以在外部使用。
捕获组又分两种,一种是捕获分组,一种是不捕获分组。

1、捕获分组
var str = "hello world";
var reg = /(world)/g;
console.log(reg.test(str));//true
console.log(RegExp.$1);//world

在reg中通过将world用 “()“括起来构成分组,此时执行test方法之后,匹配成功,同时也可看作将分组的内容也就是world存储起来了,之后通过RegExp.$1来引用。

2、不捕获分组

有时候需要使用分组,但不需要捕获分组,这个时候只需在分组内加上”?:”,比如下面:

(?:\d{2})-(\d{2})-(\d{4})

这里写图片描述
放在代码中观察

var str = "23-45-5678";
var reg = /(?:\d{2})-(\d{2})-(\d{4})/g;
console.log(reg.test(str));//true
console.log(RegExp.$1);//45

可以发现RegExp.$1的输出结果是45,而不是23,说明第一个分组被忽略了,没有捕获。

反向引用

举个例子,比如给你一个时间是2017-5-5,想获得这样一个格式,5/5/2017。这要怎么来完成?这就要使用分组的概念。

var dateStr = "2017-05-12";
var reg = /(\d{4})-(\d{2})-(\d{2})/g;
dateStr.replace(reg,"$2/$3/$1");

输出结果:

“05/12/2017”

上述例子中先是正则和要比较的字符串完全匹配,然后通过分组,可以通过$来引用分组中的

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31699845/article/details/71246449

javascript正则表达式详解

  • 2011年06月02日 10:03
  • 68KB
  • 下载

Python3 如何优雅地使用正则表达式(详解三)

模块级别的函数 使用正则表达式也并非一定要创建模式对象,然后调用它的匹配方法。因为,re 模块同时还提供了一些全局函数,例如 match(),search(),findall(),sub() 等...
  • goodboy5201314
  • goodboy5201314
  • 2015-01-12 14:43:44
  • 1069

javascript正则表达式函数用法详解

  • 2009年05月31日 13:55
  • 29KB
  • 下载

javascript正则表达式详解 (chm)

  • 2008年11月30日 20:25
  • 94KB
  • 下载

javascript 正则表达式使用详解

  • 2009年08月04日 15:16
  • 62KB
  • 下载

javascript高程三第三章笔记

一、严格模式 ES5引入了严格模式的概念,严格模式是为javascript定义了一种不同的解析模式与执行模式,在严格模式下,ES3中的不确定行为将得到处理,而且对于某些不安全的操作也会抛出错误,要在整...
  • qq_30970807
  • qq_30970807
  • 2016-12-05 21:33:37
  • 510

jscript中正则表达式用法详解

  • 2008年12月17日 20:46
  • 16KB
  • 下载

最新的javascript正则表达式详解

  • 2009年04月20日 12:21
  • 90KB
  • 下载

JavaScript手册及正则表达式详解[收藏]

  • 2010年10月26日 14:15
  • 849KB
  • 下载

javascript正则表达式最详解教程

  • 2013年03月07日 08:39
  • 95KB
  • 下载
收藏助手
不良信息举报
您举报文章:详解JavaScript正则表达式(三)
举报原因:
原因补充:

(最多只允许输入30个字)