【正则】正则笔记
一、正则写法:
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) + '.'; });

浙公网安备 33010602011771号