zoukankan      html  css  js  c++  java
  • js正则表达式详解

    一、正则的两种写法:

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

    二、转义字符:

    
       换行
    
       制表
    	   回车 
    s   空格
    S   非空格
    d   数字
    D   非数字
    w   字符 ( 字母 ,数字,下划线_ )
    W   非字符
    . 任意字符
    . 真正的点
     独立的部分 ( 起始,结束,空格 )
    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
  • 相关阅读:
    mysql官网下载链接——绿色版&安装版
    eclipse中去掉警告提示
    java用servlet、cookie实现一个阅读记录
    eclipse中的错误解决——Servlet cannot be resolved to a type
    eclipse——jsp字体设置
    eclipse——添加Tomcat7.0服务器
    eclipse中的错误解决——The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    eclipse——JavaEE插件
    OpenMP用法大全
    __new__ __init__区别
  • 原文地址:https://www.cnblogs.com/angelatian/p/6807184.html
Copyright © 2011-2022 走看看