配色: 字号:
正则表达式模式匹配的String方法
2016-08-30 | 阅:  转:  |  分享 
  
正则表达式模式匹配的String方法

String对象中支持正则表达式有4种方法,分别是:search、replace、match、split

str.search(regexp)

定义:search()方法将在字符串str中检索与表达式regexp相匹配的字串,并且返回第一个匹配字串的第一个字符的位置。如果没有找到任何匹配的字串,则返回-1。

例如:

?

1

2

3 varstr="Javascript";

str.search(/script/);//返回script中s的位置为4

str.search(/j/i);//设置正则表达是标识i:忽略大小写,则匹配到J,返回位置0 ?

1

2 varstr="javascriptiscool";

str.search(/s/g);//返回javascript中的s位置4,不会继续检索s ?

1

2 varstr="javascript";

str.replace(/javascript/,''JavaScript'');//将字符串javascript替换为JavaScript ?

1

2

3 //使用全局表示g进行全局替换

varstr="javascript";

str.replace(/a/g,''b'');//将所有的字母a替换为字母b,返回jbvbscript 字符 替换文本 $1、$2、...、$99 与regexp中的第1个到99个子表达式相匹配的文本 $& 与regexp相匹配的字串 $` 位于匹配子串左侧的文本 $'' 位于匹配子串右侧的文本 $$ 直接量符号 ?

1

2

3

4

5

6

7

8

9

10

11

12

13 //1、用子表达式替换:$1、$2等

varstr="javascript";

str.replace(/(java)(script)/,''$2$1'');?

//表达式中()就是一个子表达式,$1对应是第一个表达式的内容,即java,$2为script,所以替换结果为:scriptjava?

//2、$&为正值表达式匹配的字串

varstr="javascript";

str.replace(/java/,''$&-'');?

//正则表达式通过直接量java来匹配,匹配结果为java,则$&的值为java,然后用字符串$&-来替换匹配的字串,结果为java-script

//3、$`$''$$

varstr="javascript";

str.replace(/ava/,"$`");//$`为匹配子串ava的左侧文本,则为j,则替换后ava的结果为:jjscript

str.replace(/ava/,"$''");//$''为匹配子串ava的右侧文本,则为script,则替换ava的结果为:jscriptscript

str.replace(/ava/,"$$");//$$为直接量符号,即插入一个$符号,替换结果为:j$script ?

1

2

3

4

5

6

7

8

9

10

11 //match为匹配整个字符串,即:''abc12345#$%''

//p1为第一个子表达式,([^\d]),匹配0个或多个非数字的字符,即:abc

//p2为第二个子表达式,(\d),匹配0个或多个的数字,即:12345

//p3为第三个子表达式,([^\w]),匹配0个或匹配任何非单词字符。等价于''[^A-Za-z0-9_]'',即#$%

//offset为模式匹配出现的位置,从第一个字符已经匹配成功,则位置为0

//string为字符串本身,即abc12345#$%

functionreplacer(match,p1,p2,p3,offset,string){

return[p1,p2,p3].join(''-'');

}

varnewString=''abc12345#$%''.replace(/([^\d])(\d)([^\w])/,replacer);?

//替换结果为:abc-12345-#$% ?

1

2

3 //全局匹配

varstr="1plus2equals3";

str.match(/\d/g);//匹配字符串中出现的所有数字,并返回一个数组:[1,2,3] ?

1

2

3

4

5

6 //非全局匹配

varstr="visitmyblogatwww.hunanwang.net";

str.match(/(\w+):\/\/([\w.]+)/);//返回结果:["www.visa158.com","http","www.example.com"]

//正则表达式匹配的结果为:www.shanxiwang.net

//第一个子表达式(\w+)匹配结果:http

//第二个子表达式([\w.])匹配结果:www.example.com str.split(delimiter,limit)

定义:split()方法可以把调用它的字符串分解为一个字串数组,使用的分隔符是它的参数。

参数:

delimiter:字符串或者正则表达式,从该参数指定的地方分割字符串。

limit:指定返回数组的最大长度,如果没有设置该参数,则整个字符串都会被分割。

例如:

?

1

2

3

4

5

6

7

8

9

10

11

12 //1、只传一个参数,默认分割整个字符串

varstr="a,b,c,d,e";

str.split('','');//返回分割的字符串数组:["a","b","c","d","e"]

//2、传入两个参数

varstr="a,b,c,d,e";

str.split('','',3);//指定限定长度,则返回对应的数组:["a","b","c"]

//3、使用正则表达式匹配,不包含分割字符串

varstr="aa44bb55cc66dd";

str.split(/\d+/);//通过匹配数字进行分割字符串,但不包含分割的字符串,则返回的结果为:["aa","bb","cc","dd"];

//4、使用正则表达式匹配,包含分割字符串

varstr="aa44bb55cc66dd";

str.split(/(\d+)/);//通过匹配数字进行分割字符串,且分割的字符串是包含在子表达式中,则返回的结果为:["aa","44","bb","55","cc","66","dd"]

献花(0)
+1
(本文系爱就请温柔...首藏)