详解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”

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JS正则表达式详解-JavaScript-AJAX

  • 2010年06月07日 15:41
  • 606KB
  • 下载

javaScript 正则表达式详解

  • 2013年05月22日 08:36
  • 134KB
  • 下载

Javascript正则表达式(详解)

正则表达式是一个描述字符模式的对象。   JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法.     在JavaScr...
  • cqkxzyi
  • cqkxzyi
  • 2011年10月20日 15:47
  • 387

javascript正则表达式详解

  • 2010年09月02日 11:13
  • 227KB
  • 下载

Javascript正则表达式详解

js正则表达式是很多js开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把javascript正则表达式的用法进行了列表,希望对于大家学习javascript...
  • qc20042
  • qc20042
  • 2011年03月28日 17:59
  • 595

JavaScript正则表达式符号详解

第一种方法: var reg = /pattern/; 第二种方法: var reg = new RegExp('pattern'); 正则表达式的exec方法简介 语法: reg.exe...

韩顺平 javascript教学视频_学习笔记34_js正则表达式详解

内容介绍----正则表达式的详解 正则表达式对象: RegExp对象方法 我们来看一下RegExp对象都有哪些方法 ...

[js点滴]JavaScript之正则表达式详解02

一些符号可以影响表达式内部的子表达式之间的关系:表达式 作用 | 左右两边表达式之间 “或” 关系,匹配左边或者右边 ( ) (1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰(2)....

javascript正则表达式函数详解

JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1、使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解...
  • a125138
  • a125138
  • 2012年08月14日 22:36
  • 3129

JavaScript、Java正则表达式详解

什么是正则表达式? 正则表达式(Regular Expression)就是用某种模式去匹配一类字符串的公式。如你要在一篇文章中查找第一个字是“罗”最后一个字是“浩”的三个字的姓名,即“罗*浩”;那么...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:详解JavaScript正则表达式(三)
举报原因:
原因补充:

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