在现在的我看来,带小挂号的就是分组,嗯。

代码:

 var reg=/(abc)/;
var str="abcdabcdeabcdef";
console.dir(reg.exec(str));

 var reg=/(abc)(de)/;
var str="abcd abcde abcdef";
console.dir(reg.exec(str));

 var reg=/(abc)(abc)/;
var str="abcd abcde abcdef";
console.dir(reg.exec(str));

没有子对象

 var reg=/(abc){}/;
var str="abcd abcde abcdef abcabc";
console.dir(reg.exec(str));

 var reg=/(abc)(abc)/;
var str="abcd abcde abcdef abcabc";
console.dir(reg.exec(str));

 var reg=/(abc)(de)(fg)/;
var str="abcd abcde abcdef abcabc";
console.dir(reg.exec(str));

没有子对象

 var reg=/(abc)(de)(f)/;
var str="abcd abcde abcdef abcabc";
console.dir(reg.exec(str));

 var reg=/(abc)(f)(de)/;
var str="abcd abcde abcdef abcabc";
console.dir(reg.exec(str));

没有子对象

 var reg=/(abc)(f)/;
var str="abcd abcde abcdef abcabc";
console.dir(reg.exec(str));

没有子对象

发现:

1.测试的字符串必须含有各个小挂号里面字符相加的一个大字符串,顺序也不能乱。

2.返回的数组的长度是各个小挂号数量+1,这个1就是上面说的那个大字符串。

3.返回对象的索引就是那个大字符串的索引。

特殊的:

 var reg=/([abcd]bc)/;
var str="abc bbc cbc dbc";
console.dir(reg.exec(str));

var reg=/([abcd]bc)/g;
var str="abc bbc cbc dbc";
console.log(str.match(reg));
console.dir(reg.exec(str));
console.dir(reg.exec(str));
console.dir(reg.exec(str));
console.dir(reg.exec(str));
console.dir(reg.exec(str));
console.dir(reg.exec(str));

乖乖,这里面的道道还挺深的!

这里:中刮号内部的元素一个一个匹配,只要匹配一个就成功了,全局就全部匹配。

上面的全局的:

var reg=/(abc)(de)/g;
var str="abcd abcde abcdef";
console.log(str.match(reg));
console.dir(reg.exec(str));
console.dir(reg.exec(str));
console.dir(reg.exec(str));
console.dir(reg.exec(str));

引号对称

var reg=/^([\"'])\w*\1$/;
var str="\'abcdefgz\'";
var result=reg.exec(str);
console.log(result);
console.log(RegExp.$);

上面的\1就是引用了第一个组。

非捕获性分组

 var reg=/(abc)(de)(fg)/g;
var str="abcd abcde abcdefg abcabc";
console.dir(reg.exec(str));

 var reg=/(?:abc)(de)(fg)/g;
var str="abcd abcde abcdefg abcabc";
console.dir(reg.exec(str));

 var reg=/(?:abc)(?:de)(fg)/g;
var str="abcd abcde abcdefg abcabc";
console.dir(reg.exec(str));

 var reg=/(abc)(?:de)(fg)/g;
var str="abcd abcde abcdefg abcabc";
console.dir(reg.exec(str));

 var reg=/(?:abc)(?:de)(?:fg)/;
var str="abcd abcde abcdefg abcabc";
console.dir(reg.exec(str));

 var reg=/(abc)(?:de)(fg)/g;
var str="abcd abcde abcdefg abcabc";
console.dir(RegExp);

现在不说也发现了,其实就是那个引用没有了。

http://www.blogjava.net/ycyk168/archive/2009/10/25/299659.html

JavaScript:正则表达式 分组的更多相关文章

  1. JavaScript:正则表达式 分组2

    继续上一篇的写,这篇复杂点. 分组+范围 var reg=/([abcd]bc)/g; var str="abcd bbcd cbcd dbcd"; console.log(str ...

  2. javascript正则表达式分组捕获理解

    我们先来看一段js代码: var rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/; console.log(rquickExpr.ex ...

  3. 理清JavaScript正则表达式--上篇

    在JavaScript中,正则表达式由RegExp对象表示.RegExp对象呢,又可以通过直接量和构造函数RegExp两种方式创建,分别如下: //直接量 var re = /pattern/[g | ...

  4. Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识

    本节内容 JavaScript 正则表达式 Django初识 正则表达式 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  5. JavaScript正则表达式下——相关方法

    上篇博客JavaScript 正则表达式上——基本语法介绍了JavaScript正则表达式的语法,有了这些基本知识,可以看看正则表达式在JavaScript的应用了,在一切开始之前,看看RegExp实 ...

  6. JavaScript 正则表达式上——基本语法

    定义 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%&g ...

  7. javascript正则表达式简介

      javascript正则表达式 javascript正则表达式 regular expression是一个描述字符模式的对象: ECMAScript中的RegExp类表示正则表达式: String ...

  8. javascript正则表达式(一)——语法

    前言 js中类RegExp类表示正则表达式,具有强大的模式匹配.文本检索和替换功能.正则表达式的模式规则是由一个字符序列组成,包括所有字母和数字在内,大多数的字符都是按照直接量匹配字符,某些特殊字符并 ...

  9. JS正则表达式---分组

    JS正则表达式---分组 之前写了一篇关于正则新手入门的文章,本以为对正则表达式相对比较了解 但是今天我又遇到了一个坑,可能是自己不够细心的原因吧,今天就着重和大家分享一下javascript正则表达 ...

随机推荐

  1. linux删除指定行&删除行首空格&替换字符

    打印并删除2~1000行 nl /etc/passwd | sed '2,1000d' |more 删除行首空格 sed -i 's/^[][ ]*//g' file 替换分隔符 说明:文件中数据是由 ...

  2. JDK 伪共享解决方案

    关于AtomicReference AtomicReference是由JAVA5引入的,用于对一个对象引用进行原子操作,我们可以看到AtomicReference的实现是用CAS技术对引用进行指令级别 ...

  3. sql server内置存储过程、查看系统信息

    1.检索关键字:sql server内置存储过程,sql server查看系统信息 2.查看磁盘空间:EXEC master.dbo.xp_fixeddrives , --查看各个数据库所在磁盘情况S ...

  4. PAT Sign In and Sign Out[非常简单]

    1006 Sign In and Sign Out (25)(25 分) At the beginning of every day, the first person who signs in th ...

  5. Oracle存储过程中游标的简单使用

    存储过程中查询语句如何返回多行结果? 我们知道,如果存储过程中查询语句有多行结果输出,会报错:ORA-01422: exact fetch returns more than requested nu ...

  6. Android下基于线程池的网络访问基础框架

    引言 现在的Android开发很多都使用Volley.OkHttp.Retrofit等框架,这些框架固然有优秀的地方(以后会写代码学习分享),但是我们今天介绍一种基于Java线程池的网络访问框架. 实 ...

  7. pdo sqlserver

    PHP代码如果想要用以上的方式兼容linux服务器和windows服务器,那么大概的示例代码是这样的. <?php header("Content-type: text/html; c ...

  8. C#中DataTable

    .C#中DataTable技术学习 2009-09-10 14:37:18 阅读1496 评论0   字号:大中小 订阅 . 1.在DataTable中执行DataTable.Select(" ...

  9. 《Bilateral Multi-Perspective Matching for Natural Language Sentences》(句子匹配)

    问题: Natural language sentence matching (NLSM),自然语言句子匹配,是指比较两个句子并判断句子间关系,是许多任务的一项基本技术.针对NLSM任务,目前有两种流 ...

  10. VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)

    上一节中鸡啄米讲了GDI对象之画刷CBrush,至此图形图像的入门知识就讲完了.从本节开始鸡啄米将为大家带来Ribbon界面开发的有关内容.本文先来说说如何创建Ribbon样式的应用程序框架. Rib ...