JavaScript:正则表达式 分组
在现在的我看来,带小挂号的就是分组,嗯。
代码:
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:正则表达式 分组的更多相关文章
- JavaScript:正则表达式 分组2
继续上一篇的写,这篇复杂点. 分组+范围 var reg=/([abcd]bc)/g; var str="abcd bbcd cbcd dbcd"; console.log(str ...
- javascript正则表达式分组捕获理解
我们先来看一段js代码: var rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/; console.log(rquickExpr.ex ...
- 理清JavaScript正则表达式--上篇
在JavaScript中,正则表达式由RegExp对象表示.RegExp对象呢,又可以通过直接量和构造函数RegExp两种方式创建,分别如下: //直接量 var re = /pattern/[g | ...
- Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识
本节内容 JavaScript 正则表达式 Django初识 正则表达式 1.定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...
- JavaScript正则表达式下——相关方法
上篇博客JavaScript 正则表达式上——基本语法介绍了JavaScript正则表达式的语法,有了这些基本知识,可以看看正则表达式在JavaScript的应用了,在一切开始之前,看看RegExp实 ...
- JavaScript 正则表达式上——基本语法
定义 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%&g ...
- javascript正则表达式简介
javascript正则表达式 javascript正则表达式 regular expression是一个描述字符模式的对象: ECMAScript中的RegExp类表示正则表达式: String ...
- javascript正则表达式(一)——语法
前言 js中类RegExp类表示正则表达式,具有强大的模式匹配.文本检索和替换功能.正则表达式的模式规则是由一个字符序列组成,包括所有字母和数字在内,大多数的字符都是按照直接量匹配字符,某些特殊字符并 ...
- JS正则表达式---分组
JS正则表达式---分组 之前写了一篇关于正则新手入门的文章,本以为对正则表达式相对比较了解 但是今天我又遇到了一个坑,可能是自己不够细心的原因吧,今天就着重和大家分享一下javascript正则表达 ...
随机推荐
- android 数据存储<一>----android短信发送器之文件的读写(手机+SD卡)
本文实践知识点有有三: 1.布局文件,android布局有相对布局.线性布局,绝对布局.表格布局.标签布局等,各个布局能够嵌套的. 本文的布局文件就是线性布局的嵌套 <LinearLayout ...
- 【深入理解javascript】王福朋,厉害了word哥
学习前端有一段时间了,一直以来也没搞明白js中这个闭包到底是个什么东西,有时候看看别人的博客或者知乎的文章,大概上有个了解,可过一段时间也就忘了.偶然间有幸拜读了博客园-王福朋的这一系列文章<深 ...
- 009-java中常用的单个键值对
1.Java 6提供AbstractMap.SimpleEntry<K,V>和AbstractMap.SimpleImmutableEntry<K,V> Map.Entry&l ...
- phpStudy安装
以下一直默认安装 访问地址:http://127.0.0.1/vue/2.html
- python类内部调用自己的成员函数必须加self
class A: def a(self): print("hello world") def b(self): return self.a() 上面的self.a()中self是不 ...
- PAT 1072 Gas Station[图论][难]
1072 Gas Station (30)(30 分) A gas station has to be built at such a location that the minimum distan ...
- [转]Tesseract-OCR (Tesseract的OCR引擎最先由HP实验室于1985年开始研发)
光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程.OCR技术非常专业,一般多是印刷.打印行 ...
- 基于androidstudio3.0的build文件配置问题
最近,在研究APP自动化相关的东西,在搭建环境的时候,遇到的坑以及最后解决的方法,不过目前很多东西了解得还不是很细,暂时先简单的记录一下一.build配置文件 主要分为两种: 1.工程下的build配 ...
- selenium webdriver显示等待时间
当页面加载很慢时,推荐使用显示等待:等到需要操作的那个元素加载成功之后就直接操作这个元素,不需要等待其他元素的加载 WebDriverWait wait = new WebDriverWait(dri ...
- mac远程连接windows
第一步:在Mac上安装Remote Desktop Connection 进入Microsoft Remote Desktop Connection下载安装包. 下载完成之后,双击安装包进行安装. 第 ...