(1)((2))(3)
 
$1  是第一个括号
$2  是第二个括号
$3  是第二个括号中的括号
$4  是第三个括号
 
 
http://www.jb51.net/article/28007.htm
 
 
正则表达式具有如下属性
正则表达式会记录下一次开始执行时索引位置
 
【1】str.match(reg)   返回所有匹配的结果数组(g情况也包括)
使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。
如果match的表达式匹配了全局标记g将出现所有匹配项,而不用循环,但所有匹配中不会包含子匹配项。 
 var s = "The rain in Spain falls mainly in the plain"; re = /(a)in/ig; // 创建正则表达式模式。 r = s.match(re); // 尝试去匹配搜索字符串。 document.write(r); // 返回的数组包含了所有 "ain" 出现的四个匹配,r[0]、r[1]、r[2]、r[3]。 // 但没有子匹配项a。}输出结果:ain,ain,ain,ain 
 
 
【2】exec 方法 
用正则表达式模式在字符串中查找,并返回该查找结果的第一个值(数组),如果匹配失败,返回null。 
rgExp.exec(str) 
返回数组包含: 
数组也是一个对象,exec返回的数组定义了input、index属性
input:整个被查找的字符串的值; 
index:匹配结果所在的位置(位); 
arr:结果值,arr[0]全匹配结果,arr[1,2...]为表达式内()的子匹配,由左至右为1,2...。 
 
如果为正则表达式设置了全局标记g,exec 从以 lastIndex 的值指示的位置开始查找。如果没有设置全局标志,exec 忽略 lastIndex 的值,从字符串的起始位置开始搜索。利用这个特点可以反复调用exec遍历所有匹配,等价于match具有g标志。 
当然,如果正则表达式忘记用g,而又用循环(比如:while、for等),exec将每次都循环第一个,造成死循环。 exec的输出将包含子匹配项。 
 
 
【3】简单实例对比,比较这俩不同看下面两个的输出结果就可以
function execDemo(){ 
var r, re; // 声明变量。 
var s = "The rain in Spain falls mainly in the plain"; 
re = /[\w]*(ai)n/ig; 
r = re.exec(s); 
res = s.match(re);
window.onload = execDemo(); 
不设置全局标志g,match和exec返回相同的结果
 
设置全局标志
exec一次返回一个匹配的结果,包含子结果。下一次开始位置是上一次结束之后的位置
 
 
match一次返回所有匹配的结果,但不包含子数组
 
 
 
 
【4】rgexp.test(str) 
 
 
test()继承正则表达式的lastIndex属性,表达式在匹配全局标志g的时候须注意。 
例子5:

复制代码代码如下:
function testDemo(){ 
var r, re; // 声明变量。 
var s = "I"; 
re = /I/ig; // 创建正则表达式模式。 
document.write(re.test(s) + "<br/>"); // 返回 Boolean 结果。 
document.write(re.test(s) + "<br/>"); 
document.write(re.test(s)); 

testDemo(); 

输出结果: 
true 
false 
true 
当第二次调用test()的时候,lastIndex指向下一次匹配所在位置1,所以第二次匹配不成功,lastIndex重新指向0,等于第三次又重新匹配。

 
【5】search 方法 
返回与正则表达式查找内容匹配的第一个子字符串的位置(偏移位)
function SearchDemo(){ 
var r, re; // 声明变量。 
var s = "The rain in Spain falls mainly in the plain."; 
re = /falls/i; // 创建正则表达式模式。 
re2 = /tom/i; 
r = s.search(re); // 查找字符串。 
r2 = s.search(re2); 
return("r:" + r + ";r2:" + r2); // 返回 Boolean 结果。 

document.write(SearchDemo()); 
 
输出:r:18;r2:-1 
 
search只查找一次,即使设置了g。重复调用也是从起始位置开始
 
 
 
【6】stringObj.split([separator[, limit]]) 
split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解。separator 不作为任何数组元素的部分返回。
 
【7】stringObj.replace(rgExp, replaceText) 
 
rgExp:正则表达式、字符串、文字
 
【8】构造函数属性
RegExp.$1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

正则表达式test match exec search的更多相关文章

  1. python正则表达式函数match()和search()的区别详解

    match()和search()都是python中的正则匹配函数,那这两个函数有何区别呢? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找 ...

  2. 正则表达式中的exec和match方法的区别

    正则表达式中的exec和match方法的区别 字符串的正则方法有:match().replace().search().split() 正则对象的方法有:exec().test() 1.match m ...

  3. python正则表达式模块re:正则表达式常用字符、常用可选标志位、group与groups、match、search、sub、split,findall、compile、特殊字符转义

    本文内容: 正则表达式常用字符. 常用可选标志位. group与groups. match. search. sub. split findall. compile 特殊字符转义 一些现实例子 首发时 ...

  4. Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答

    Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答 Boost正则表达式库regex常用search和match示例 发表回复   Boo ...

  5. js正则表达式中test,exec,match方法的区别说明

    js正则表达式中test,exec,match方法的区别说明 test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var ...

  6. javascript中正则表达式中的 match,exec,test,replace 之我理解

    这个正则 ($&) 的语法: https://msdn.microsoft.com/library/3k9c4a32(v=vs.94).aspx 在ECMAScript中对这几个的说明: ma ...

  7. 正则表达式test()和exec()、 search() 和 replace()用法实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. python中,有关正则表达式re函数:compile、match、search、findall

    1.全局匹配函数 re.compile(pattern=pattern,re.S).findall(text)函数: compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对 ...

  9. python 正则表达式re使用模块(match()、search()和compile())

    摘录 python核心编程 python的re模块允许多线程共享一个已编译的正则表达式对象,也支持命名子组.下表是常见的正则表达式属性: 函数/方法 描述 仅仅是re模块函数 compile(patt ...

随机推荐

  1. ThreadLocal使用方法

      创建一个Bean,通过不同的线程对象设置Bean属性,保证各个线程Bean对象的独立性.   /**  * Created by IntelliJ IDEA.  * User: leizhimin ...

  2. SharePoint管理中心配置内容数据库

    SharePoint管理中心配置内容数据库         在SharePoint2010中,内容数据库是组织数据的核心. 是全部站点内容信息,如文档.列表数据和Web部件属性等存储的地方.默认地,内 ...

  3. Java并发编程(十一)实例封闭

    本节主题:如果一个类是线程不安全的,但是又要在多线程程序中安全地使用,你该怎么办? 大体有两种思路: 第一种:确保该对象是能由单个线程访问,也就是这个对象是被封闭在线程中的: 第二种:通过锁来对该对象 ...

  4. UVA - 11584 划分字符串的回文串子串; 简单dp

    /** 链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34398 UVA - 11584 划分字符串的回文串子串: 简单 ...

  5. Linux Linux常用命令二

    whoami 我是谁命令 --该命令用户查看当前系统当前账号的用户名 --由于系统管理员通常需要使用多种身份登录系统,李儒通常使用普通用户登录系统,然后再以su命令切换到root身份对系统进行灌篮.这 ...

  6. js 简单的样式封装

    <script> function test(value){ var str=value; document.write("<div style=\"width: ...

  7. Spring4 MVC表单验证

    在这篇文章中,我们将学习如何使用Spring表单标签, 表单验证使用 JSR303 的验证注解,hibernate-validators,提供了使用MessageSource和访问静态资源(如CSS, ...

  8. 1、AEC-实用口语寒暄Greetings

    (2) 想不到在这见到你世界真小啊.Fancy meeting you here .What a small world !It's a small world, isn't it ? (3) 好久不 ...

  9. FZU2030(括号匹配)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110977#problem/E 题目大意:略 题目思路:数据范围很小,可以搜索, ...

  10. poj3159

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 28133   Accepted: 7766 Descrip ...