用于测试字符串参数中是否存在匹配正则表达式模式的字符串
如果存在就返回true,否则返回false
实例:
1、使用test方法不设置g标志时
2、使用test方法设置g全局
值会变得不稳定,一会是true一会是flase。(实际上是lastIndex的原因,并不是每次匹配都是从头开始的)
第一次lastIndex=0(从第0个之后开始,返回true)查找完后,会把lastIndex的值设置为匹配到的字符串的最后一个字符的索引位置+1,
第二次如果存在就返回true,否则返回false查找时会从lastIndex这个位置开始,lastIndex=0+1(从第1个之后开始,返回true)
第三次查找lastIndex=1+1(从第2后开始,返回false)
所以想用test方法的原意是不用加g标志
目的:适应正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性以反应匹配结果
如果没有匹配的文本则返回null,如果匹配到了就返回一个结果数组;
数组内容:
非全局调用
调用非全局的RegExp对象的exec()时,如果匹配到返回数组
第一个元素是与正则表达式相匹配的文本
第二个元素是与RegExpObject的第一个子表达式相匹配的文本(如果有)
第三个元素是与RegExp对象的第二个子表达式相匹配的文本(如果有的话),以此类推
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title></title>
6 </head>
7 <body>
8 <script>
9 var reg1=/\d(\w)\d/g;
10 var reg2=/\d(\w)\d/;
11 var as="a1b2c3d4e5";
12
13 var sd=reg1.exec(as);
14 document.write(sd.index + sd.toString());
15 console.log(reg1.lastIndex + ‘\t‘ + sd.index + ‘\t‘ + sd.toString());
16 console.log(reg1.lastIndex + ‘\t‘ + sd.index + ‘\t‘ +sd.toString());
17
18 </script>
19 </body>
20 </html>
目的:用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串
方法返回第一个匹配结果index(匹配的第一个字符出现的位置),查找不到返回 -1
search()方法不执行全局匹配,忽略标志 g,并且总是从字符串的开始进行检索
实例:
直接写数字依然可以
目的:match()方法将检索字符串,以找到一个或是多个与regexp匹配的文本
与search()忽略g标志不同的是,match()方法regexp是否有具有g标志对结果影响很大
非全局调用
如果regexp没有标志g,那么match()方法就只能在字符串中执行一次匹配
如果没有找到任何匹配的文本,将返回null
如果找到匹配的文本将返回一个数组,其中存放了与它找到的匹配文本有关的信息。
返回数组的第一个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本
除了常规的数组元素之外,返回的数组还含有2的对象属性
var reg3=/\d(\w)\d/g;
var ts="a1b2c3d4e5";
var ret=ts.match(reg3);
console.log(ret);
console.log(reg3.lastIndex + ‘\t‘ + ret.index + ‘\t‘ );
全局调用
如果regexp具有标志g则match()方法将执行全局检索,找到字符串中的所有匹配子字符串
数组元素中方存放的是字符串中所有的匹配子串,而且也没有indx属性或input属性(信息量也更少)
var reg4=/\d(\w)\d/;
var ts="a1b2c3d4e5";
var ret=ts.match(reg4);
console.log(ret);
console.log(reg4.lastIndex + ‘\t‘ + ret.index + ‘\t‘ )
我们经常使用split 方法把字符串分割为字符数组
在一些复杂的分割情况下可以使用正则表达式解决
用数字作为分隔标志
语法结构:
String.prototype.replace(str,replaceStr)
String.prototype.replace(reg,replaceStr)
String.prototype.replace(reg,function)
第一个参数可以是字符串或正则表达式,第二个参数可以是需要替换的字符也可以是函数
例:查找字符串中的数字,并替换成数字或字母
String.prototype.replace(reg,function)
function参数含义
function会在每次匹配替换的时候调用(每次匹配的时候就调用一次),调用的时候会传入四个参数
实例:
1、
‘a1b2c3d4e5‘.replace(/\d/g, function(match,index,origin){
console.log(index);
return parseInt(match) + 1;
});
2、
‘a1b2c3d4e5‘.replace(/(\d)(\w)(\d)/g, function(match,group1,group2,group3,index,origin) {
console.log(match);
return group1 + group2;
});
原文:https://www.cnblogs.com/nyw1983/p/11558514.html