正则表达式学习


1 匹配中文:[\u4e00-\u9fa5]
2 行首行尾空格:^\s*|\s*$
3 Email:^\w+@[a-z0-9]+(\.[a-z]+){1,3}$
4 网址:[a-zA-z]+://[^\s]*
5 QQ号:[1-9][0-9]{4,9}
6 邮政编码:[1-9]\d{5}
7 身份证:[1-9]\d{14}|[1-9]\d{17}|[1-9]\d{16}x
8 单标签: /^<(\w+)\s*\/?>(?:<\/\1>|)/
9 获取页面参数
 getUrlParams: function(key) {
            var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)", "i");
            var r = window.location.search.substr(1).match(reg);
            if (r != null) return decodeURIComponent(r[2]);
            return null;
}

正则创建方法:


var rep= /a/;

var rep= new RegExp('a');//如果正则传参,一定要用此方法,如获取网址参数;  var rep= new RegExp('\\b'+sClass+'\\b',g);


正则方法:


test    调用   rep.test(str);

以下调用都是   str.xxxx(rep);
match   返回匹配数组,如果不匹配,返回NULL,  正则有G(全局)时,返回的是匹配数组,没G时,返回数组第一项是母表达式,第二项是子表达式,以此类推
search  寻找正则匹配字符的位置
replace  返回字符串 str.replace('a','b'),str.replace(reg,function(){}) 两种调用方式


转义符

\n  换行
\b  独立(包括空格,起始,结束)\B 非独立,大写表示非,下同
\d  数字 \D
\s  空格 \S
\w 字符([a-zA-Z0-9]加'_')
\.点号
. 任意字符


量词

{2,}2次以上
{2,5}2到5次
{2}2次
? 0或1次
* 0次以上
+ 1次以上

[]
字符类,相似的一类元素,[]表示一个字符  [abc]  表示匹配a或b或c  [^b]不是b的一个字符

|  表示或   3|5 


()  分组,子表达式   表示(\w)\1+ 表示重复字符串


查找出现最多的字符

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);



function getByClass(oParent,sClass){
        var arr = [];
        var aEle = oParent.getElementsByTagName('*');
        
        //var re = /sClass/;  //当正则需要传参的时候,一定要用全称的写法
        var re = new RegExp('\\b'+sClass+'\\b');
        
        for(var i=0;i<aEle.length;i++){
            if( re.test(aEle[i].className) ){
                arr.push( aEle[i] );
            }
        }
        
        return arr;
        
    }


敏感词过滤

window.onload = function(){
    var aT = document.getElementsByTagName('textarea');
    var oInput = document.getElementById('input1');
    
    var re = /菲称|中国船|监视之下/g;
    
    oInput.onclick = function(){
        
         //aT[1].value = aT[0].value.replace(re,'*');
         
         aT[1].value = aT[0].value.replace(re,function(str){
        //函数的第一个参数:就是匹配成功的字符     
        
             //alert( str );
             
             var result = '';
             
             for(var i=0;i<str.length;i++){
                 result += '*';
             }
             
             
             return result;
             
         });
        
    };
    
};
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值