js,awk match 正则表达式式,exec,match的结果不明白,求大神解答啊~~

js的正则test,match,exec详细解析
字体:[ ] 类型:转载 时间:
本篇文章主要是对js的正则test,match,exec进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
正则表达式gi我刚开始也看不懂,从网上找到后看到了,现在分享给大家正在表达式的通项: /pattern/flags 即(/模式/标记 )构造器函数方法使用方法如下:new RegExp("pattern"[, "flags"])即new RegExp("模式"[,"标记"])参数:pattern(模式)表示正则表达式的文本flags(标记)如果指定此项,flags可以是下面值之一:g: global match(全定匹配)i: ignore case(忽略大小写)gi: both global match and ignore case(匹配所有可能的值,也忽略大小写)表达式建立同样的正则表达式例如:
正则表达式中/i,/g,/ig,/gi,/m的区别和含义
/i (忽略大小写)/g (全文查找出现的所有匹配字符)/m (多行查找)/gi(全文查找、忽略大小写)/ig(全文查找、忽略大小写)
test,match,exec
JavaScript中经常用到正则表达式, 而正则表达式中经常用到Match和Test这两个函数,当然还有Exec. 这里以代码实例来区分它们之间的不同吧.
Match Example 代码如下:var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";var regexp = /[A-E]/
var rs = str.match(regexp);
//rs= Array('A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e');Test Example 代码如下:var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";var regexp = /[A-E]/
var rs = regexp.test(str);
// rs = booleanExc Example 代码如下:var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";var regexp = /[A-E]/while ((rs = regexp.exec(str)) != null){&&& document.write(rs);&&& document.write(regexp.lastIndex);&&& document.write("&br /&");}
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具js正则函数match、exec、test、search、replace、split使用介绍集合_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
js正则函数match、exec、test、search、replace、split使用介绍集合
上传于||文档简介
&&j​s​正​则​函​数​m​a​t​c​h​、​e​x​e​c​、​t​e​s​t​、​s​e​a​r​c​h​、​r​e​p​l​a​c​e​、​s​p​l​i​t​使​用​介​绍​集​合
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩11页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.[ js进阶 ] test, exec, match, replace - 推酷
[ js进阶 ] test, exec, match, replace
上面这四个方法在js中用的很多,但有时对它们又不清晰,所以有必要来总结一下。
对了,这篇文章可能会涉及到正则表达式相关知识,所以推荐没有正则基础的去看看这篇入门文章:
,很经典的文章,反正我的正则就是从这里学的,^▽^ 。
注: pattern 为 RegExp 的实例, str 为 String 的实例
| 用法 | 说明| 返回值|
| pattern.test(str) |判断 str 是否包含匹配结果 | 包含返回 true ,不包含返回 false 。|
| pattern.exec(str) |根据 pattern 对 str 进行正则匹配 |返回匹配结果数组,如匹配不到返回 null |
| str.match(pattern) |根据 pattern 对str进行正则匹配 |返回匹配结果数组,如匹配不到返回 null |
| str.replace(pattern, replacement) |根据 pattern 进行正则匹配,把匹配结果替换为 replacement |一个新的字符串 |
RegExp对象方法
字符串的 test 方法,比较常用在判断语句中,最简单的RegExp方法了,用于检测一个字符串是否匹配某个模式:
RegExpObject.test(string)
如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false:
//d/.test('asdf2') // --true
检测字符串`'asdf2'`中是否函数数字
exec()方法功能非常强大,它是一个通用的方法方法,用于比较复杂的模式匹配或者是说你为你提供更多的信息:
RegExpObject.exec(string)
如果在string中找到了匹配的文本,则返回一个包含这些文本的数组,否侧返回 null 。这里有几个注意的地方:
1.返回的数组的第一个元素是与整个正则匹配的文本
然后数组的第二个元素是与整个正则的第一个子表达式(分组)相匹配的文本
数组的第三个元素整个正则的第二个子表达式(分组)相匹配的文本,以此类推。
var result = /(/d+)-(/w+)/.exec('12-ab');
console.log(result) // --& [&12-ab&, &12&, &ab&, index: 0, input: &12-ab&]
//为什么上面返回的“数组”是那么奇怪,按照[w3school][2]的说法就是:exec() 都会把完整的细节添加到它返回的数组中,这里的细节指的就是index和input
整个正则表达式匹配的文本:`&12-ab&`
第一个子表达式匹配的文本:`&12&`
第二个子表达式匹配的文本:`&ab&`
2. 从上面返回的数组结果可知,数组添加了两个额外的属性,分别是:
index, input
index: 匹配文本的第一个字符的位置.
input: 顾名思义,就是指输入的整体的文本了.
console.log(result.index) // --& 0
console.log(result.input) // --& '12-ab'
3.执行exec函数时,尽管是全局匹配的正则表达式,但是exec方法只对指定的字符串进行一次匹配,
获取字符串中第一个与正则表达式想匹配的内容,并且将匹配内容和子匹配的结果存储到返回的数组中,
例如: //d/g.exec('a22') ,返回的结果和上面的结果一样: [&2&]
//d/g.exec('a22') // --&[&2&]
深入了解exec() :
深入前看看RegExp的实例有哪些属性:
global: 布尔值,表示是否设置了g标志
ignoreCase: 布尔值,表示是否设置了g标志
lastIndex: 搜索下一个匹配项时开始的位置,从0开始
multiline: 布尔值,表示是否设置了g标志
source: 正则表达式的字符串表示
这里稍微陌生一点的就是lastIndex属性了,因为我们不会显示的需要用到它。但它还是挺重要的:
例1:非全局匹配
var reg = //d/;
//第一次匹配
console.log(reg.exec('a123'));
console.log(reg.lastIndex);
第二次匹配
console.log(reg.exec('a123'));
console.log(reg.lastIndex);
1.同一正则表达式,在非全局匹配模式下,每次实例的 lastIndex 属性的值总是不变的(为第一次找到匹配文本
所在的位置,上面为0 );
2.每次的匹配查找都是将 lastIndex 作为起始位置的
例1:全局匹配
var reg = //d/g;
//第一次匹配
console.log(reg.exec('a123'));
console.log(reg.lastIndex);
第二次匹配
console.log(reg.exec('a123'));
console.log(reg.lastIndex);
第三次匹配
console.log(reg.exec('a123'));
console.log(reg.lastIndex);
console.log(reg.exec('a123'));
console.log(reg.lastIndex);
1.同一正则表达式,在全局匹配模式下,每次实例的 lastIndex 属性的值为匹配文本最后一个字符的
下一个位置,上面例子中第一次匹配的时候最后一个字符位置为1,则下一个位置为:2
2.当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0。
那当要获取全局匹配的全部匹配项时,可以通过循环来获取:
var reg = //d/g,
result = [],
while((crt = reg.exec('a123')) !== null){
result = result.concat(crt)
//[&1&, &2&, &3&]
String对象方法
1. match()
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。在一定程度上它与上面的exec()有些相似,看一下吧:
例1:非全局匹配
var a = 'aaaa'.match(//w/);
console.log(a); // [&a&, index: 0, input: &aaaa&]
可以看到,和exec()一样,在数组中返回了index 和 input属性。
例2:全局匹配
var a = 'aaaa'.match(//w/g);
console.log(a); // [&a&, &a&, &a&, &a&]
全局匹配就和 exec 方法有很大的不同了,他直接返回了所有符合匹配的子字符串的数组,另外, index 和input属性也不在其中了,所以这个方法效率可能会高一些,但是如果你需要更多的信息,则用 exec() 吧
2. replace()
这也是一个比较灵活常用的方法,它用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
这个方法接收两个必须的参数:
pattern: 这个参数可以是字符串或是RegExp对象
replacement: 替换匹配项的字符串或处理函数的返回值
返回结果:
1.当未找到匹配项的时候,返回原始字符串。
'aaaa'.replace('bbb', 'b')
2.当pattern为字符串或者为非全局的RegExp对象的时候,只替换找到的第一项匹配项。
'aaaa'.replace('a', 'b')
'aaaa'.replace(//w/, 'b')
3.当pattern为全局的RegExp对象的时候,替换每一项匹配项。
'aaaa'.replace(//w/g, 'b')
replacement:为函数时:
'aaaa'.replace(//w/g, function() {
return 'b';
}); // &bbbb&
'aaaa'.replace(//w/g, function(value) {
return value.toUpperCase();
}); // &AAAA&
1.函数的返回值将作为替换字符串2.函数的第一个参数的值是每一个匹配项,当然还有第二个参数,它的值是每个匹配项在原始字符串的中位置,从0开始
特殊的 $ :
replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。
| 字符| 替换文本|
|$1、$2、…、$99|与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。|
|$& |与 regexp 相匹配的子串|
|$` |位于匹配子串左侧的文本|
|$’ |位于匹配子串右侧的文本|
|$$ |直接量符号|
//第一种情况:
'aa11AA'.replace(/([a-z]+)(/d+)([A-Z]+)/g, '$1'); // &aa&
'aa11AA'.replace(/([a-z]+)(/d+)([A-Z]+)/g, '$2'); // &11&
'aa11AA'.replace(/([a-z]+)(/d+)([A-Z]+)/g, '$3'); // &AA&
//猜想 如果是 $4 回事什么呢? undefined ?
'aa11AA'.replace(/([a-z]+)(/d+)([A-Z]+)/g, '$4'); // &$4&
//所以,要是没有该子项,则当成普通字符串处理了
//第二种情况:
'aa11AA'.replace(/([a-z]+)(/d+)([A-Z]+)/g, '$&'); //&aa11AA&
//第三种情况:
'aa11AA'.replace(/(/d+)/g, '$`'); //&aaaaAA&
//第四种情况:
'aa11AA'.replace(/(/d+)/g, &$'&); //&aaAAAA&
//第五种情况:
'aa11AA'.replace(/(/d+)/g, '$$'); //&aa$AA&
先这样吧,有问题再补充了,( ╯□╰ )
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 js exec match 的文章

 

随机推荐