正則表達(dá)式

創(chuàng)建正則表達(dá)式

var r = /a/;

正則.test(字符串)

正則去匹配字符串,如果匹配成功就返回真,如果匹配失敗就返回假

var str = 'abcdef';
var re = /b/;

alert( re.test(str) );

轉(zhuǎn)義字符

\s : 空格
\S : 非空格
\d : 數(shù)字
\D : 非數(shù)字
\w : 字符 ( 字母 ,數(shù)字,下劃線_ )
\W : 非字符

(大寫都是反義)

例子: 判斷是否全為數(shù)字

var str = '374829348791';

var re = /\D/;

if( re.test(str) ){
    alert('不全是數(shù)字');
}
else{
    alert('全是數(shù)字');
}

字符串.search(正則)

正則去匹配字符串 , 如果匹配成功,就返回匹配成功的位置,如果匹配失敗就返回 -1

var str = 'abcdef';

var re = /b/;

alert( str.search(re) );

正則中的默認(rèn) : 是區(qū)分大小寫的
如果不區(qū)分大小寫的話,在正則的最后加標(biāo)識 i

var str = 'abcdef';

var re = /B/i;

alert( str.search(re) );

字符串.match(正則)

正則去匹配字符串,如果匹配成功,就返回匹配成功的數(shù)組,如果匹配不成功,就返回null

var str = 'haj123sdk54hask33dkhalsd879';

var re = /\d/;

alert( str.match(re) );

正則默認(rèn):正則匹配成功就會結(jié)束,不會繼續(xù)匹配
如果想全部查找,就要加標(biāo)識 g(全局匹配)

var str = 'haj123sdk54hask33dkhalsd879';

var re = /\d/g;

alert( str.match(re) );

查找連在一起的數(shù)字

var str = 'haj123sdk54hask33dkhalsd879';

var re = /\d\d/g;

alert( str.match(re) );//只會找到12 54 33 87

量詞 : 匹配不確定的位置
+ : 至少出現(xiàn)一次

var str = 'haj123sdk54hask33dkhalsd879';

var re = /\d+/g;

alert( str.match(re) );

字符串.replace(正則,新的字符串)

正則去匹配字符串,匹配成功的字符去替換成新的字符串

var str = 'aaa';
var re = /a+/g;

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

alert(str);

例子:關(guān)鍵字過濾

//菲稱仁愛礁附近17艘中國船均在菲軍監(jiān)視之下

//| : 或的意思

//replace : 第二個參數(shù):可以是字符串,也可以是一個回調(diào)函數(shù)

var aT = document.getElementsByTagName('textarea');
var oInput = document.getElementById('input1');

var re = /菲稱|中國船|監(jiān)視之下/g;

oInput.onclick = function(){
    
     //aT[1].value = aT[0].value.replace(re,'*');
     
     aT[1].value = aT[0].value.replace(re,function(str){
    //函數(shù)的第一個參數(shù):就是匹配成功的字符     
    
         //alert( str );
         
         var result = '';
         
         for(var i=0;i<str.length;i++){
             result += '*';
         }
         
         
         return result;
         
     });
    
};

匹配子項 : 小括號 () (還有另外一個意思,分組操作)

把正則的整體叫做(母親)
然后把左邊第一個小括號里面的正則,叫做這個第一個子項(母親的第一個孩子)
第二個小括號就是第二個孩子

var str = '2013-6-7';

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

str = str.replace(re,function($0,$1,$2){
    //第一個參數(shù):$0(母親),第二個參數(shù) : $1(第一個孩子)
    //,第二個參數(shù) : $1(第二個孩子)
    
    //alert( $2 );
    
    return $1 + '.';
    
});

alert( str );   //2013.6.7

字符類

一組相似的元素 [] 中括號的整體代表一個字符

var str = 'abc';

var re = /a[bde]c/;

alert( re.test(str) );

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

var str = 'afc';

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

alert( re.test(str) );
var str = 'abc';

var re = /a[a-z0-9A-Z]c/;

alert( re.test(str) );

例子:過濾標(biāo)簽

替換前<br />
<textarea>
</textarea><br />
替換后<br />
<textarea>
</textarea><br />
<input type="button" value="確定" id="input1" />
<script>
window.onload = function(){
    var aT = document.getElementsByTagName('textarea');
    var oInput = document.getElementById('input1');
    
    //var re = /<\w+>/g;
    
    var re = /<[^>]+>/g;
    
    oInput.onclick = function(){
        
        aT[1].value = aT[0].value.replace(re,'');
        
    };
    
};
</script>

轉(zhuǎn)義字符

. : 任意字符
. : 真正的點

\b : 獨立的部分 ( 起始,結(jié)束,空格 )
\B : 非獨立的部分

//var str = 'one two';
var str = 'onetwo';

var re = /one\b/;

alert( re.test(str) );

量詞 : {}

{4,7} : 最少出現(xiàn)4次,最多出現(xiàn)7次
{4,} : 最少出現(xiàn)4次
{4} : 正好出現(xiàn)4次

  • : {1,}
    ? : {0,1} : 出現(xiàn)0次或者1次
  • : {0,} : 至少出現(xiàn)0次*/

例子:判斷是不是qq號

var re = /^[1-9]\d{4,11}$/;

郵箱:

var re = /^\w+@[a-z0-9]+(\.[a-z]+){1,3}$/;

重復(fù)的子項

\1 : 重復(fù)的第一個子項
\2 : 重復(fù)的第二個子項

var str = 'abca';

var re = /(a)(b)(c)\2/;

alert( re.test(str) )

下面寫法的區(qū)別

var re = /\w\w/;  //c9
var re = /(\w)\1/; //cc 99

例子: 找重復(fù)項最多的字符和個數(shù)

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+',重復(fù)的次數(shù):'+index);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容