【正则】正则笔记

一、正则写法:

var re = /a/;      //一般这种写法。

var re = new RegExp('a');

二、正则的方法

1、test,判断是存在,返回true/false

test : 正则去匹配字符串,如果匹配成功就返回真,如果匹配失败就返回假

test的写法 : 正则.test(字符串)

例子:

var str = 'abcdef';
var re = /b/;
alert(  re.test(str)  );     //true

三、正则的规则

 

\s : 空格                    英文( space)

\S : 非空格              

\d : 数字                   英文( digit)

\D : 非数字

\w : 字符   ( 字母 ,数字,下划线_ )

\W : 非字符

.  :  任意字符

\.  : 真正的点

\b : 独立的部分   ( 起始,结束,空格 )

\B : 非独立的部分

 

 

var str = 'onetwo';

 

var re = /one\b/;

 

alert( re.test(str) );

 

\1 :重复的第一个子项

\2 :重复的第二个子项

\3 :重复的第三个子项

 

var str = 'abca';
var re = /(a)(b)(c)\1/;        //第四位的\1代表跟第一个子项相同
alert( re.test(str) );            //返回true

 

 

(1)量词

{4,7}  : 最少出现4次,最多出现7次

{4,} : 最少出现4次

{4} : 正好出现4次

 

+ : {1,}  //\d{1,}

? : {0,1}  : 出现0次或者1次

* : {0,}  : 至少出现0次*/

 

 

(2)如果不区分大小写的话,在正则的最后加标识 i

var  re = /B/i;   //不区分正则B的大小写。

 

(3)如果想全部查找,就要加标识 g(全局匹配)

 

(4)量词 : 匹配不确定的位置

//+ : 至少出现一次

 

var  re = / \d+ /g;

 

(5)| : 或的意思

var  re =  /菲称|中国船|监视之下/g;    //三个词,任意一个都可以

 

(6)字符类 : 一组相似的元素   [] 中括号的整体代表一个字符

var str = 'abdc';

var re = /a[bde]c/;

alert( re.test(str) );

(7)排除 : ^ 如果^写在[]里面的话,就代表排除的意思

 

var str = 'abc';

var re = /a[^bde]c/;   //第二个字符不包括bde

alert( re.test(str) );

3、search,找位置,返回位置

search : 正则去匹配字符串 , 如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回-1

 

search的写法 : 字符串.search(正则)

 

例子:

var str = 'abcdef';

var re = /B/i;

alert(  str.search(re)  );  //返回1, 不区分大小写

 

4、match,返回匹配成功的数组

match : 正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null

 

match的写法 : 字符串.match(正则)

 

//正则默认:正则匹配成功就会结束,不会继续匹配

//如果想全部查找,就要加标识 g(全局匹配)

 

//量词 : 匹配不确定的位置

//+ : 至少出现一次

 

var str = 'haj123sdk54hask33dkhalsd879';

var re = /\d+/g;

alert( str.match(re) );   //[1]

 

5、replace,替换新字符

replace : 正则去匹配字符串,匹配成功的字符去替换成新的字符串

 

replace的写法 : 字符串.replace(正则,新的字符串)

 

例子1:

var str = 'aaa';

var re = /a+/g;        //全部匹配,a匹配个数大于1,所以匹配到aaa,str=b

str = str.replace(re,'b');   

alert(str);          //str返回b

 

例子2:

var str = 'aaa';

var re = /a/g;          //全部匹配,a匹配个数是1,所以匹配到a,str=bbb

str = str.replace(re,'b');   

alert(str);          //str返回bbb

 

 

(2)replace : 第二个参数:可以是字符串,也可以是一个回调函数

         函数的第一个参数:就是匹配成功的字符        

 

var  re = /菲称|中国船|监视之下/g;

var  word='菲称仁爱礁附近17艘中国船在菲军监视之下';

word = word.replace(re,function(str){   //str代表匹配到的字符
//函数的第一个参数:就是匹配成功的字符     
//alert( str );
  var result = '';
  for(var i=0;i<str.length;i++){
     result += '*';
  }
  return result; 
});
alert( word );
//**仁爱礁附近17艘***在菲军****,匹配字符几位,就替换成几个*

 

(3)replace : 回调函数

var str = '2013-6-7';

var re = /(\d+)(-)/g;

str = str.replace( re,function( $0, $1, $2){

         //第一个参数:$0(母亲,匹配字符),第二个参数 : $1(第一个孩子)

         //,第二个参数 : $1(第二个孩子)

         //alert( $2 );

         //return $1 + '.';

         return $0.substring(0,$0.length-1) + '.';

});

 

posted @ 2019-02-26 14:19  cindy2035  阅读(199)  评论(0)    收藏  举报