【Js】正则表达式

什么是正则表达式

正则表达式是就是一套规则。用这规则去判断是否是邮箱,是否是电话号码等。

正则是一个对象:它有属性和方法。

正则是匹配所需字符串的强大工具。

正则写法

var rRe = new RegExp('字符串', '可选模式')

var rRe = /字符串/可选模式

可选模式有

  i (ignoreCase 忽略大小写)         作用:忽略大小写

  g (global 全局)     作用:匹配全部

  m (muliti-line 多行)  作用:匹配多行

正则基础标识符

方括号[]:

[] (任意一个)  var re1= /[abc]/;    匹配a,b,c中的任意一个。

[^] (除了)   var re2 = /[^iso]/; 匹配除了 i,s,o的任意字符。

[0-9] (到、之间)  var re3 = /[a-z0-9]/;  匹配 a到z和0到9中的任意一个。

(abc|xde|seo) (或)  var  re4 = /(abc|xde|seo)/;  匹配 abc 或 xde 或 seo。

量词(重复次数):

{n} (刚好n次)  

{n,} (最少n次)  var re1 = /[a-z]{2}/;  最少匹配2个字母,最多不限。

{n,m} (最少n次,最多m次) 

+ (若干次)   var re3 = /[0-9]+/;  若干个数字 等价于{1,} 最少一次

?(0次或者一次)  var  re4 = /a[0-9]?b/;  匹配a(0个数字)b或者 a(1个数字)b    等价于{0,1}

元字符(转义字符):

\d (digit数字)  var re1 = /\d\d/;  匹配2个数字

\w (字母,数字和下划线)  var re2 = /\w+/;  匹配若干个字符

\s (space 空白符)

\D (\d的反义)   var re3 = /\D/;   匹配非数字

\W (\w的反义)

\S (\s的反义)

String对象的方法和正则的配合

search方法:

1 var rRe = /\d[ab]/g;    //匹配一个数字+a或b 如 2b 0a
2 var rRe1 = /\d{3}/g;    //匹配3个数字
3 var str = '铅笔是a2b,写出02a';
4 var result = str.search(rRe);    //search返回匹配的第一个元素的位置,后面不管
5 var result1 = str.search(rRe1);    //如果没匹配到则返回-1
6 console.log(result);    //结果 4; 
7 console.log(result1);    //结果 -1; 

 

replace方法:

1 var rRe = /[abc2]/ig;        //ig 忽略大小写和全部匹配
2 var str = 'iisocrazC123';    //大小C 
3 var result = str.replace(rRe, '*')
4 console.log(result);    //结果: iiso*r*z*1*3 

match方法:

1 var rRe = /\d+/g;    //匹配若干个数字
2 var str = 'abc e123 02s a3a';
3 var result = str.match(rRe);    //match把符合的元素 组成一个数组
4 console.log(result);    //结果 ["123", "02", "3"] 

split方法:

1  var rRe = /\|{2}/g;    //匹配||
2  var str = 'abc||e123||02s||a3a';
3  var result = str.split(rRe, '3');    //split把字符串分隔成数组 2是定义数组长度
4  console.log(result);    //结果 ["abc", "e123", "02s"]

正则对象自己的属性和方法

 属性:global, ignoreCase, mulitiline

1 var rRe = /[^8]\d{6,7}/gm;
2 rRe.global? console.log('有g') : console.log('无g')
3 rRe.ignoreCase? console.log('有i') : console.log('无i')
4 rRe.multiline? console.log('有m') : console.log('无m')
5 //结果: 有g无i有m

属性:lastIndex, source

 1 // lastIndex: 在全部匹配下(g) 记录test()或exec()匹配的最后位置
 2 // source: 正则所匹配的源(在匹配什么)
 3 var str = "The rain in Spain stays mainly in the plain";
 4 var rRe =/ain/g;    
 5 for(i = 0; i < 3; i++){//匹配3次
 6   rRe.test(str)
 7   document.write("ain第"+i+"次的位置: " + rRe.lastIndex +', ');      //输出每次匹配的最后位置
 8   // 结果:ain第0次的位置:8, ain第1次的位置:17, ain第2次的位置:28,}  
 9 }
10   console.log(rRe.source);        //结果ain

test方法:

1 var str = "The rain in Spain";
2 var rRe =/ain/g;    
3 var rRe1 = /01/g;
4 var result = rRe.test(str);        //检测字符串中是否有匹配
5 var result1 = rRe1.test(str);    //检测字符串中是否有匹配
6 console.log(result);    //结果: true
7 console.log(result1);    //结果: flase

exec方法:

1 var str = "The rain in Spain";
2 var rRe =/ain/g;    
3 var result = rRe.exec(str);        //检测字符串中是否有匹配,找到返回值,并确定位置
4 console.log(result);    //结果: ["ain"]
5 console.log(rRe.lastIndex);    //结果: 8

 

 

posted @ 2013-01-08 13:23  ic-  阅读(382)  评论(0编辑  收藏  举报