04-使用正则表达式进行搜索
17.3 使用正则表达式进行搜索
有了正则表达式之后,当需要在字符串中进行搜索时,就有了更多选择 。
为了理解不同的替换方式,先稍微预习一下正则表达式元语言。在这里使用静态字符串就太无趣了,所以用了动态表达式 /\w{3.}/ig ,它会匹配所有包含三个或三个以上字母的单词(不区分大小写)。现在先不用急着去理解这个表达式,到了本章后面自然会理解。先来看一些可用的搜索方法:
const input = "As I was going to Saint Ives";
const re = /\w{3,}/ig;
// 从字符串(input)开始
input.match(re); // ["was", "going", "Saint", "Ives"]
input.search(re); // 5 (首次在下标5中出现了满足表达式的单词)
// 从正则表达式开始(re)
re.test(input); // true (input至少包含一个三个字母的单词)
re.exec(input); // ["was"] (第一个匹配)
re.exec(input); // ["going"] (exec会“记住”它所在的位置)
re.exec(input); // ["Saint"]
re.exec(input); // ["Ives"]
re.exec(input); // null – 匹配完毕
// 注意,所有这些方法都可以直接使用字面量语法
input.match(/\w{3,}/ig);
input.search(/\w{3,}/ig);
/\w{3,}/ig.test(input);
/\w{3,}/ig.exec(input);
// ...
在这些方法中,提供信息最多的是 RegExp.prototype.exec ,但读者会发现实际中用的最少的也是它。作者自己用的最多的是 String.prototype.match 和 RegExp.prototype.test 。