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