JavaScript之正则匹配字符串的关键词与位置

indexOf/lastIndexOf

缺点:不支持正则。
如果找到,返回关键词的位置;如果找不到,返回-1。

关键词位置
否:var i = str.indexOf(“关键词”,fromi)匹配从第fromi开始,向后找第一个关键词位置 i
否:var i = str.lastIndexOf(“关键词”,fromi)匹配第从fromi开始,向前找第一个关键词位置 i

其实和indexOf差不多,只是不能指定fromi,默认是从第0个字符开始,向后找第一个关键词位置。
支持正则。
如果找到,返回关键词的位置;如果找不到,返回-1。

关键词位置
否:var i = str.search(/正则/)匹配从0开始,向后找第一个关键词位置 i

match

强调: 只要一个方法可能返回null,就都要先验证不是null,再使用。
强调: 所有正则表达式默认只匹配一个关键词。除非在第二个/后加g,表示全部;加i表示忽略大小写。

关键词位置
是 kwords[0] :var kwords = str.match(/正则/)不加g的情况下才能匹配关键词位置 kwords.index
是 kwords数组 :var kwords = str.match(/正则/g)加g的情况下不能匹配关键词位置

exec

1
2
3
4
5
6
7
8
9
/* 正则直接量的特殊符号: 直接量中的/都要转为\/  */
var reg = /正则/g;
/* 用new的特殊符号: \ " '都要转义为:\\ \" \' */
/* var red = new RegExp("正则","g") */
var arr=[];
while((arr=reg.exec(str))!=null){
console.log(arr);
console.log("在位置"+arr.index+"发现关键词"+arr[0]+"下次从"+reg.lastIndex+"开始找")
}
关键词位置
是 arr[0] :arr=reg.exec(str)关键词位置 arr.index