一、正則的兩種寫法:
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
