js正则表达式详解


一、正则的两种写法:

var re = /a/;               //一般情况下都用简写的方式  性能好
var re = new RegExp('a');    //需要传入参数的时候用

二、转义字符:

\n   换行
\r   制表
\t   回车 
\s   空格
\S   非空格
\d   数字
\D   非数字
\w   字符 ( 字母 ,数字,下划线_ )
\W   非字符
. 任意字符
\. 真正的点
\b 独立的部分 ( 起始,结束,空格 )
\B 独立的部分
\1 重复的第一个子项
\2 重复的第二个子项

三、正则的方法:

1、test:正则去匹配字符串,如果匹配成功就返回真,如果匹配失败就返回假;test的写法 : 正则.test(字符串)

var str = '374829348791';

var re = /\D/;

alert( re.test( str ) );   // false 匹配失败

2、search : 正则去匹配字符串 , 如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回 -1(和字符串里面的indexOf方法很像);search的写法 : 字符串.search(正则)

正则中的i:正则中默认是区分大小写的;如果不区分大小写的话,在正则的最后加标识 i

var str = 'abcdef';

var re = /B/i;

//var re = new RegExp('B','i');   //也可以写成这种形式

alert( str.search(re) );   //true

3、match : 正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null;match的写法 : 字符串.match(正则)

正则默认:正则匹配成功就会结束,不会继续匹配;如果想全部查找,就要加标识 g(全局匹配)

量词 : 匹配不确定的位置;+ : 至少出现一次(>=1次 都会被找到)

var str1 = 'asdhfgsaghd12332slsd34';

var re = /\d+/g;

alert( str1.match(re));    //[12332,34]

4、replace:正则去匹配字符串,匹配成功的字符去替换成新的字符串;replace的写法 : 字符串.replace(正则,新的字符串)

var str = 'aaa';
var re = /a+/g;   //此时'a'替换了'aaa'

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

alert(str);  //'b'

四、匹配子项 : 小括号 ()  (还有另外一个意思,分组操作)

var str = '2013-6-7';

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

str = str.replace(re,function($0,$1,$2){
    //第一个参数:$0(整体)
    //第二个参数 : $1(第一括号里的正则)
    //第三个参数 : $2(第二个括号里的正则)
    
    //alert( $2 );
    
    //return $1 + '.';
    
    return $0.substring(0,$0.length-1) + '.';
    
});

alert( str );   //2013.6.7    

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

var str = 'abdc';

var re = /a[bde]c/;    //字符类中的是“或”的关系 但是整体的位数要和字符串的一致

alert( re.test(str) );  //true

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

var str = 'abc';

var re = /a[^bde]c/;        //取反 

alert( re.test(str) );   //false

六、找出字符串中最多的字符和个数:

var str = 'assssjdssskssalsssdkjsssdss';

var arr = str.split('');

str = arr.sort().join('');

//alert(str);

var value = '';
var index = 0;

var re = /(\w)\1+/g;

str.replace(re,function($0,$1){
    
    //alert($0);
    
    if(index<$0.length){
        index = $0.length;
        value = $1;
    }
    
});

alert('最多的字符:'+value+',重复的次数:'+index);

七、量词:出现的次数,常用的量词有:

{n,}  至少n次
*     任意次 {0,}
?    零次或一次   {0,1}
+     一次或任意次{1,}
{n}   正好n次

八、去掉前后空格:^开始  $结束

var str = ' hello ';

function trim(str){
    
    var re = /^\s+|\s+$/g;
    
    return str.replace(re,'');
    
}

alert( '('+trim(str)+')' );

九、常用的正则例子(高级表单验证)

匹配中文:[\u4e00-\u9fa5]
行首行尾空格:^\s*|\s*$
Email:^\w+@[a-z0-9]+(\.[a-z]+){1,3}$
网址:[a-zA-z]+://[^\s]*
QQ号:[1-9][0-9]{4,9}
邮政编码:[1-9]\d{5}
身份证:[1-9]\d{14}|[1-9]\d{17}|[1-9]\d{16}x


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM