在没有学正则表达式之前,我们都是用js提供的方法进行匹配指定字符串,往往需要些一大串代码!

首先来复习下js为我们提供的一些字符串操作方法:

  1. str.indexOf("s");返回指定字符串首次出现的位置。

  2. str.search("s");搜索指定字符串,并返回首次出现的位置,如果没有则返回-1。

  3. str.substring(n,m);返回索引是n和m-1之间的字符串,截取子串。

  4. str.slice(n,m);和substring方法一样。

  5. str.charAt(n);返回指定位置n的字符。

  6. str.split('s');按照指定字符分割字符串,返回一个数组。

  7. str.replace(“s”,“S”);`替代字符,将大S代替小s。

  8. 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。