JavaScript 正则表达式 方法
如何学习正则
可以在浏览器的控制台,通过命令查看
let reg=/\d+/;
console.dir(reg);//顺着原型链查找有哪些方法
console.dir(RegExp.prototype);//正则类的原型
console.dir(RegExp);
实例方法
- test 在字符串中检测模式匹配,返回
true
或false
- exec 该方法是专门为捕获组而设计的
- 功能:正则捕获的数据,一个数组;
- 参数:要应用模式匹配的字符串
- 特性:
- 使用全局标记 g;持续查找所有匹配项并返回
- 不使用全局标记 g;始终返回第一个匹配项信息
- 执行的过程
- 检测字符串参数,获取正则表达式匹配文本
- 找到匹配文本则返回一个数组
- 第 0 个元素:与整个模式匹配的字符串
- 其他元素:与捕获组匹配的字符串
- 否则返回 null
- 派生属性
- index 匹配项在字符串中的位置
- input 应用正则表达式的字符串
- length 返回数组元素的个数
var text = "cat, bat, sat, fat";
var pattern1 = /.at/;
var matches = pattern1.exec(text);
console.log(matches.index); //0
console.log(matches[0]); //cat
console.log(pattern1.lastIndex); //0
matches = pattern1.exec(text);
console.log(matches.index); //0
console.log(matches[0]); //cat
console.log(pattern1.lastIndex); //0
var pattern2 = /.at/g;
var matches = pattern2.exec(text);
console.log(matches.index); //0
console.log(matches[0]); //cat
console.log(pattern2.lastIndex); //3
matches = pattern2.exec(text);
console.log(matches.index); //5
console.log(matches[0]); //bat
console.log(pattern2.lastIndex); //8
第一个模式 pattern1 不是全局模式,因此每次调用 exec() 返回的都是第一个匹配项( “cat” )。
而第二个模式 pattern2 是全局模式,因此每次调用 exec() 都会返回字符串中的下一个匹配项,直至搜索到字符串末尾为止。
此外,还应该注意模式的 lastIndex 属性的变化情况。
在全局匹配模式下, lastIndex 的值在每次调用 exec() 后都会增加,而在非全局模式下则始终保持不变。\
IE 的 JavaScript 实现在 lastIndex 属性上存在偏差,即使在非全局模式下,lastIndex 属性每次也会变化。
字符串方法
与正则可以搭配的方法扩展
- match 找到一个或者多个正则表达式的匹配
- replace 替换与正则表达式匹配的子串
- search 检索与正则表达式匹配的值
- split 把字符串分割为字符串数组
扩展思考
看看其他的一些方法,了解都是做什么的。