在没有学正则表达式之前,我们都是用js提供的方法进行匹配指定字符串,往往需要些一大串代码!
首先来复习下js为我们提供的一些字符串操作方法:
-
str.indexOf("s");
返回指定字符串首次出现的位置。
-
str.search("s");
搜索指定字符串,并返回首次出现的位置,如果没有则返回-1。
-
str.substring(n,m);
返回索引是n和m-1之间的字符串,截取子串。
-
str.slice(n,m);
和substring方法一样。
-
str.charAt(n);
返回指定位置n的字符。
-
str.split('s');
按照指定字符分割字符串,返回一个数组。
-
str.replace(“s”,“S”);`替代字符,将大S代替小s。
-
str.match("ss");
匹配并以数组的形式返回一个指定字符串,该数组有三项,[0]是指定字符串,[1]是指定字符出现的位置,[2]是原字符串。
一般常用的字符串操作方法就是以上7种,以下是小案例分析。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| var str = 'acbdfghjfg';
console.log(str.indexOf('f')); //返回指定字符串第一次出现的位置 结果(4)
console.log(str.search('bd')); //查找字符串第一次出现的位置,没有返回-1 结果(2)
console.log(str.substring(1,4)); //包前不包后 结果(cbd)
console.log(str.charAt(5)); //获取指定位置的字符 结果(g)
console.log(str.split('f')); //利用指定字符分割字符串 结果([ acbd , ghj , g ])
console.log(str.slice(1,4)); //和上面一样 结果(cbd)
console.log(str.replace('f','Q')); //替换第一次出现的字符 结果(acbdQghjfg)
console.log(str.match("fg")); //返回指定的字符串(数组形式),该数组有三项:1.指定字符串 2.指定字符串首次出现的位置index.原字符串input 结果([ "fg",index : 4 , input : acbdfghjfg ])
|
下面分析一个完整案例,从某字符串中提取数字。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| var str = “di h84 nd9 fpd o3-609 hd0”; var tmp = ‘ ‘; //临时存储数字 var arr = [ ] ; //所有数字 for( var i = 0; i if( str.charAt( i )>=’0’&&str.charAt( i )<=’9′ ){ //匹配大小 tmp += str.charAt( i ); //符合要求存入临时变量 }else{ //如果不符合但是临时变量里有值,放入数组,并清空临时变量 if(tmp){ arr.push( tmp ); tmp = ‘ ‘; } } } if( tmp ){ //如果最后一位是数字 arr.push( tmp ); tmp = ‘ ‘; }
|
传统的字符串操作也可以筛选数字、英文、中文,数字的范围是0–9,英文范围是a–z | A-Z ,中文范围\u4e00–\u9fa5。