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()构造成的正则 ...
随机推荐
- CF135A Replacement
http://codeforces.com/problemset/problem/135/A 题意 : 我能说我卡在这个题的题意上很久吗.....这个题就是在数组里找一个数,然后找另一个数把他替换掉, ...
- jmeter 启用gzip压缩——解决测试中web服务器上行流量过大的问题
最近测了几个前端的项目,发现它们都有一个共同点:应用所在服务器的网卡上行(trans)非常大——经常是 117 MB/S,这已经逼近了千兆网卡的极限了.下面记录下排查和解决过程: 一. jmeter ...
- java中 正则表达式的使用
推荐使用第一种 第一种: //对接收的文件名的合法性进行验证 String fileName="127.0.0.1_01_20140428165022174.jpg"; Strin ...
- php用于URL的base64
function base64url_encode($plainText) { $base64 = base64_encode($plainText); $base64url = strtr($bas ...
- *J2EE中乱码处理
发生中文乱码有三种情况 表单form (1)post 首先确定浏览器的编码方式,比如说utf-8,请求发给web服务器,web服务器以编码方式iso-9959-1来接收数据(服务器是外国人编写的),服 ...
- 基于web的项目管理软件Redmine
Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来, 支持多种数据库,有不少自己独特的功能,例如提供wiki ...
- (转)Decision Tree
Decision Tree:Analysis 大家有没有玩过猜猜看(Twenty Questions)的游戏?我在心里想一件物体,你可以用一些问题来确定我心里想的这个物体:如是不是植物?是否会飞?能游 ...
- 关于高斯消元解决xor问题的总结
我觉得xor这东西特别神奇,最神奇的就是这个性质了 A xor B xor B=A 这样就根本不用在意重复之类的问题了 关于xor的问题大家可以去膜拜莫队的<高斯消元解XOR方程组>,里面 ...
- 跟我学LFS LiveUSB制作
LFS LiveCD启动 插入U盘,查看U盘相应的设备名 $ sudo /sbin/fdisk -l ... Device Boot Start End Block ...
- 百度分享不支持https的解决方案
站点自从开启 https 之后 ,百度分享就不能用了!但是又寻找不到类似百度分享的替代品.. 怎么办呢?要如何解决 百度分享不支持https的问题呢, 跟着博主动动手,让你百度分享仍然能在https下 ...