JavaScript RegExp方法
1.exec():
1.1、格式:match = pattern.exec(string);其中pattern是正则,string是被匹配的字符串;
1.2、返回第一个匹配项macth数组,其中后三个元素有index,input,length属性,还有捕获项从数组第一项开始,捕获项是在匹配项中提取出来的,数组第一个元素是整个模式匹配到的字符串
1.2.1、index:表示匹配项在string中的起始位置
1.2.2、input:就是string的一个副本
var string = "bbc abc cbc";
var reg = /bbc( abc( cbc)?)?/gi;
var match = reg.exec(string);
console.log(match);
输出如下:
Array[3]
0: “bbc abc cbc”
1: ” abc cbc”
2: ” cbc”
index: 0
input: “bbc abc cbc”
length: 3
proto: Array[0]
1.3、pattern中设置全局g那么每次使用pattern匹配string时候,返回下一个匹配项,也就是说原来匹配到string的第一个符合条件项时候,返回,现在从这里继续匹配剩下的字符串,找到符合的就返回;
var text = "cat bat sat fat";
var preg = /.(a)(t)/gi;
var matches = preg.exec(text);
console.log(matches[0]); // cat
var matches = preg.exec(text);
console.log(matches[0]); // bat
var matches = preg.exec(text);
console.log(matches[0]); // sat
var matches = preg.exec(text);
console.log(matches[0]); // fat
2.test():主要用于判断字符串是否能被某个正则匹配到,部分匹配或者完全匹配都行,也就是说只要正则能够找到一个匹配项就是true,返回boolean;
2.1、格式: boolean = pattern.test(string);
// a.整个字符串匹配正则
var reg = /.at/;
var string = "cat";
console.log(reg.test(string)); // true
// a.字符串某部分匹配正则
var string1 = "caa bat bcc";
console.log(reg.test(string1));
3.正则表达式的实例属性:
3.1、global:表示是否匹配字符串中所有满足正则表达式的项
3.2、ignoreCase: 表示是否不区分大小写
3.3、lastIndex:整数,表示开始搜索下一个匹配项的字符位置从0算起
3.4、 multline:表示是否在多行中匹配
3.5、source:返回正则表达式的字面量模式,不包括标志位
var reg = /at/gi;
console.log(reg.source); // .at 只返回模式没有标志
/* 以下三返回模式+标志 */
console.log(reg.toLocaleString()); // /.at/gi
console.log(reg.toString()); // /.at/gi
console.log(reg.valueOf()); // /.at/gi
var reg = new RegExp('[]at',gi);
console.log(reg.source); // []at 只返回模式没有标志
/* 以下三返回模式+标志 */
console.log(reg.toLocaleString()); // /[]at/gi
console.log(reg.toString()); // /[]at/gi
console.log(reg.valueOf()); // /[]at/gi
4.RegExp构造函数属性
4.1、input:表示被匹配的字符串
4.2、lastMatch: 表示最近一个匹配项,并不是最后一个匹配项,因为test和exec函数都是匹配到符合的项就停止,比如以下是good,但是再调用一次reg.test(string);lastMatch值就是goog
4.3、lastParen:最近一次匹配的最后一个捕获组
4.4、leftContext:input字符串中lastMatch之前的文本
4.5、rightContext:input字符串中lastMatch之后的文本
4.5、multiline:是否所有表达式都使用多行模式,谷歌是不undefined
4.6、获取最近一次匹配项的1-9个捕获组,比如获取第一个为RegExp.$1;
var reg = /(.)oo(.)/gim;
var string = "you are good boy goog";
reg.test(string);
console.log(RegExp.input); // you are good boy
console.log(RegExp.lastMatch); // good
console.log(RegExp.lastParen); // d
console.log(RegExp.leftContext); // you are
console.log(RegExp.multiline); // undefined
console.log(RegExp.rightContext); // boy
console.log(RegExp.$1); // g
console.log(RegExp.$2); // d
reg.test(string);
console.log(RegExp.lastMatch); // goog