RegExp.exec
来自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec
Summary
Executes a search for a match in a specified string. Returns a result array, or null.
(在指定的字符串中寻找匹配。返回结果数组,或者null。)
Method of RegExp |
|
|---|---|
| Implemented in | JavaScript 1.2 |
| ECMAScript Edition | ECMAScript 3rd Edition |
Syntax
result = regexp.exec(str)
Parameters
regexp- The name of the regular expression. It can be a variable name or a literal.(正则表达式的名字。可以是变量的名字或者是字面量)
str- The string against which to match the regular expression.(对这个字符串正则表达式匹配)
Return value
If the match succeeds, the exec method returns an array and updates properties of the regular expression object.(如果匹配成功,exec方法返回数组并更新正则表达式对象的属性。) The returned array has the matched text as the first item, and then one item for each capturing parenthesis that matched containing the text that was captured.
If the match fails, the exec method returns null.
If you are executing a match simply to find true or false, use the RegExp test method or the String search method.
Consider the following example:
<script>
// Match one d followed by one or more b's followed by one d
// Remember matched b's and the following d
// Ignore case
var re = /d(b+)(d)/ig;
var result = re.exec("cdbBdbsbz");
console.log(result[0]);//dbBd
console.log(result[1]);//bB
console.log(result[2]);//d
console.log(result[3]);//undefined
console.log(result.index);//1
console.log(result.input);//cdbBdbsbz
console.log(re.lastIndex);//5
console.log(re.ignoreCase);//true
console.log(re.global);//true
console.log(re.multiline);//false
console.log(re.source);//d(b+)(d)
</script>
The following table shows the results for this script:
| Object | Property/Index | Description | Example |
result |
[0] |
The last matched characters | dbBd |
[1], ...[n] |
The parenthesized substring matches, if any. The number of possible parenthesized substrings is unlimited. | [1] = bB |
|
index |
The 0-based index of the match in the string. | 1 |
|
input |
The original string. | cdbBdbsbz |
|
re |
lastIndex |
The index at which to start the next match. | 5 |
ignoreCase |
Indicates if the "i" flag was used to ignore case. |
true |
|
global |
Indicates if the "g" flag was used for a global match. |
true |
|
multiline |
Indicates if the "m" flag was used to search in strings across multiple line. |
false |
|
source |
The text of the pattern. | d(b+)(d) |
Notes
Finding successive matches
If your regular expression uses the "g" flag, you can use the exec method multiple times to find successive matches in the same string. When you do so, the search starts at the substring of str specified by the regular expression's lastIndex property (test will also advance the lastIndex property). For example, assume you have this script:
<script>
var myRe = /ab*/g;
var str = "abbcdefabh";
var myArray;
while ((myArray = myRe.exec(str)) !== null)
{
var msg = "Found " + myArray[0] + ". ";
msg += "Next match starts at " + myRe.lastIndex;
console.log(msg);
}
</script>
This script displays the following text:
Found abb. Next match starts at 3
Found ab. Next match starts at 9
Note: Do not place the regular expression literal (or RegExp constructor) within the while condition or it will create an infinite loop if there is a match due to the lastIndex property being reset upon each iteration.
Using exec() with RegExp literals
You can also use exec() without creating a RegExp object:
<script>
var matches = /(hello \S+)/.exec('This is a hello world!');
alert(matches[1]);
</script>
This will display an alert containing 'hello world!';
Calling exec() with no parameters in old Gecko versions
Prior to Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5), exec() was implemented incorrectly; when it was called with no parameters, it would match against the value of the previous input (RegExp.input property) instead of against the string "undefined". This is fixed; now /undefined/.exec() correctly results in ['undefined'], instead of an error.
<script>
var matches = /undefined/.exec("");
alert(matches);
matches = /undefined/.exec();
alert(matches[1]);//undefined
matches = /undefined/.exec("undefined");
alert(matches[1]);//undefined
</script>
RegExp.exec的更多相关文章
- js 正则表达式的使用(标志 RegExp exec() test() compile() $1...$9)
一,标志 g (global,全局匹配标志) 执行正则表达式匹配或替换时,一般只要搜索到一个符合的文本就停止匹配或替换.使用该标志将搜索所有符合的文本直到文本末尾. i (ignoreCase,忽略大 ...
- string.match(RegExp) 与 RegExp.exec(string) 深入详解
string.match(RegExp) 与 RegExp.exec(string) 相同点与不同点对比解析: 1. 这两个方法,如果匹配成功,返回一个数组,匹配失败,返回null. 2. 当RegE ...
- RegExp.exec和String.match深入理解
今天在重新阅读<JavaScript权威指南>的RegExp和String的时候,看到了2个比较容易混淆的函数:RegExp的exec和String的match 这2个函数都是从指定的字符 ...
- RegExp exec有记忆性的问题
当 RegExpObject 是作为一个变量时时.每次调用完exec()后.它会在 RegExpObject 的 lastIndex 属性指定的字符处开始检索字符串 string.当 exec() 找 ...
- JavaScript RegExp.exec() 方法
定义和用法: exec() 方法用于检索字符串中的正则表达式的匹配. 语法: RegExpObject.exec(string); RegExpObject:必须参数,正则表达式: string:必须 ...
- JavaScript RegExp对象的exec()方法
JavaScript RegExp对象的exec()方法用来匹配字符串,它的行为与match()有些不同. 对于RegExpObject.exec(),w3school上面是这样介绍的: exec() ...
- 原生JS:RegExp对象详解
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 正则表达式中的exec和match方法的区别
正则表达式中的exec和match方法的区别 字符串的正则方法有:match().replace().search().split() 正则对象的方法有:exec().test() 1.match m ...
- 深度解析正则表达式exec和match两者使用的异同以及要注意的地方
1.match match方法属于String正则表达方法. 语法: str.match(regexp) str:要进行匹配的字符串. regexp:一个正则表达式(或者由RegExp()构造成的正则 ...
随机推荐
- [Ruby on Rails系列]3、初试Rails:使用Rails开发第一个Web程序
本系列前两部分已经介绍了如何配置Ruby on Rails开发环境,现在终于进入正题啦! Part1.开发前的准备 本次的主要任务是开发第一个Rails程序.需要特别指出的是,本次我选用了一个(Paa ...
- spring事物的传播行为
1.spring事物的传播行为,主要是用来解决业务层拥有事物的方法,相互调用的问题. 2.声明事物, 在代码执行前,开启事务.代码执行完,提交事务 3.spring并没有提供事务具体的处理,而只是调用 ...
- WPF中动态添加xaml资源文件
一.新建一个资源文件,然后设置其Build Actoin(生成操作)为Resource(资源): 二.在App.xaml.cs的StartUp事件或者是你需要的时机代码段写上如下代码: Resourc ...
- 如何快速查看linux的发行版信息
思路一: 在CentOS中想查看发行版信息,输入了lsb_release -a 命令却报错了,通过输入以下命令进行安装 yum install redhat-lsb -y 然后继续查看发行版信息 [r ...
- PHP开发搜索引擎技术全解析
谈到网页搜索引擎时,很多人都会想到雅虎.的确,雅虎开创了一个互联网络的搜索时代.然而,雅虎目前用于搜索网页的技术却并非该公司原先自己开发的.2000年8月,雅虎采用了Google这家由斯坦福大学学生创 ...
- NFC(13)使用Android Beam技术传输文件
注意 Android Beam技术传输文件时nfc只负责连接两个手机,而传输文件实际是用蓝牙模块.且目前接收文件功能只是系统完成,不用自写个接收程序. 传输文件相关的重要api 从Android4.1 ...
- Go语言Revel框架 环境搭建
1.首先参考连个链接 http://blog.csdn.net/creak_phone/article/details/12620969 http://www.geek521.com/?p=616 2 ...
- git恢复被修改的文件
恢复到最后一次提交的改动: git checkout -- + 需要恢复的文件名 但是,需要注意的是,如果该文件已经 add 到暂存队列中,上面的命令就不灵光喽 需要先让这个文件取消暂存: git r ...
- webapp开发经验和资料
开发经验: 开发资料: 1. http://xuui.net/librarys/webapps/webapp-development-of-commonly-used-code-snippets.ht ...
- 【转】忙里偷闲写的小例子---读取android根目录下的文件或文件夹
原文网址:http://www.cnblogs.com/wenjiang/p/3140055.html 最近几天真的是各种意义上的忙,忙着考试,还要忙着课程设计,手上又有外包的项目,另一边学校的项目还 ...