javascript-正則表達式
一、正則表達式簡介
一套規則表達式
1.正則表達式的應用場景
表單驗證
解析url參數
篩選....
2.正則表達式的定義
字面量形式 ===》 //
構造函數形式 ===》new RegExp()
*****區別
字面量形式內不能夠放入變量|函數
構造函數形式內可以放入變量|函數
/* var reg = /a/; alert(reg); */ var reg = new RegExp("b"); alert(reg);View Code
3.正則表達式的方法
test:
功能:看內容是否與正則匹配
返回:布爾值
匹配==》true
不匹配===>false
exec
功能:看內容是否與正則匹配
返回:匹配內容的數組
匹配==》數組
不匹配==》null
/* var reg = /a/; var str = "a"; alert( reg.test(str) ); //true alert(typeof reg.exec(str) ); //Object 刪除typeof 返回a */ var num1 = 1; // var reg1 = /"+num1+"/; var reg1 = new RegExp(num1); var str1 = "1"; //alert(reg1);//"+num1+"/ alert( reg1.test(str1) ); //View Codetrue
二、正則表達式的元字符
[] ===》匹配括號內的任意“一個”字符
[^] ===》匹配除了括號內的任意字符
[0-9] ===》匹配0至9的任意數字
[a-z] ===》匹配a至z的任意小寫字母
[A-Z] ===》匹配A至Z的任意大寫字母
\d ===》匹配數字 :[0-9]
\D ===》匹配非數字
\w ===》匹配數字、字母、下劃線 : [0-9a-zA-Z_]
\W ===》匹配非數字、字母、下劃線
\s ===》匹配空格
\S ===》非空格
\b ===》匹配邊界
. ===》除換行符以外的任意字符
轉義符
\ ===》去除具有特殊意義的元字符的功能,如\d的匹配數字功能\\d加了轉義後它將成為真正的d而失去匹配數字功能
/*var reg = /[abc]/; //匹配中括號內的任意一個字符 var str = "c"; alert(reg.test(str)); //true */ /*var reg1 = /[^abc]/; var str1 = "u"; alert(reg1.test(str1)); //true */ /*var reg2 = /[3-9]/; var num2 = 5; alert(reg2.test(num2));//true */ //var reg3 = /[a-z]/; /*var reg3 = /[A-Z]/; var str3 = "A"; alert(reg3.test(str3)); //true */ //var reg4 = /[0-9a-zA-Z]/; //數字 大小寫字母 //var reg1 = /\d/; /* var reg1 = /\D/; var num1 = 5; alert( reg1.test(num1) ); */ //var reg2 = /\w/; /*var reg2 = /\W/; var str2 = "_"; alert(reg2.test(str2));*/ //var reg3 = /\s/; /*var reg3 = /\S/; var str3 = " "; alert( reg3.test(str3) );*/ /*var reg4 = /\ba/; var str4 = " a"; alert( reg4.test(str4) );*/ /* var reg5 = /./; var str5 = "\n"; alert( reg5.test(str5) ); */ var reg6 = /\./; //.有特殊含義、除了換行符以外的任意字符 var str6 = "."; alert( reg6.test(str6) );View Code
三、正則表達式限定符
^ ===》以字符串的起始(開始)
$===》以字符串的結束(結束)
/* var reg = /\d/; // \d ====>數字 沒有限定符num中,只要有數字即可 var num = "5a"; alert(reg.test(num)); */ /* var reg1 = /\w/; //數字 字母 下劃線 var str1 = "^_^"; alert( reg1.test(str1) ); */ /*var reg2 = /^\d\d$/; // 以數字開始 以數字結束 ===》數字只有一位數 var num2 = "55"; alert( reg2.test(num2) );*/View Code
四、正則表達式重復
{n} ====>匹配重復N次
{n,} ====》匹配重復最少n次,最多不限
{n,m} ====》匹配重復最少n次,最多m次
* ====》匹配重復最少0次,最多不限
+ ====》匹配重復最少1次,最多不限
? ====》匹配重復最少0次,最多一次
/* var reg3 = /^\d{11}$/; // 手機號===>11位數 var num3 = 1234567890; alert( reg3.test(num3) ); //false */ //匹配數字最少匹配到6次 , 最多不限 /*var reg4 = /^\d{6,}$/; var str4 = "123454655555555555789"; alert( reg4.test(str4) ) */ //用戶名最少6個字符,最多12個字符 /* var reg5 = /^\w{6,12}$/; var str5 = "123ab__44444a"; alert( reg5.test(str5) ); */ /*var reg6 = /^\d*$/; //匹配數字,最少可以沒有,最多不限制 var num6 = ""; alert( reg6.test(num6) );*/ /*var reg7 = /^\d+$/; //匹配數字,最少一次,最多不限制 var num7 = "1111111111111"; alert( reg7.test(num7) );*/ /* var reg8 = /^\d?$/; //匹配數字,最少0次,最多一次 var num8 = "11"; alert( reg8.test(num8) ); */View Code
五、選擇符
| ===》或
var reg1 = /com|cn/; var str1 = "com"; alert( reg1.test(str1) ); //com或cn都為trueView Code
六、修飾符
i ===》不區分大小寫
g ===》全文匹配(全局模式)
m ===》換行匹配
/* var reg1 = /[a-zA-Z]/; // 匹配大寫字母, 匹配小寫字母 var str1 = "A"; alert( reg1.test(str1) ); */ /*var reg1 = /[A-Z]/i; // i===》不區分大小寫 var str1 = "b"; alert( reg1.test(str1) );*/ /*var reg1 = new RegExp("[A-Z]","i"); var str1 = "b"; alert( reg1.test(str1) );*/ /*var reg1 = /a/g; var str1 = "abc a a a"; var str = str1.replace(reg1,"#"); document.write(str);*/ /* var reg1 = /baidu/g; var str1 = "1.baidu\n2.baidu\n3.baidu"; var str = str1.replace(reg1,"#"); document.write(str); */ /*var reg1 = /^\d/gm; var str1 = "1.baidu\n2.baidu\n3.baidu"; var str = str1.replace(reg1,"#"); document.write(str);*/ var reg2 = /[a-z]/igm; var str2 = "a a a a A A"; var str = str2.replace(reg2,"#"); document.write(str);View Code
七、分組
() ==》把內容組合起來
/*var reg1 = /^(abc)$/; var str1 = "abc"; alert( reg1.test(str1) );*/ /* var reg2 = /^ab{3}c{3}$/; //C重復必須是3次 var str2 = "abbbccc"; alert( reg2.test(str2) ); */ /* var reg2 = /^(abc){3}$/; //abc重復必須是3次 var str2 = "abcabcabc"; alert( reg2.test(str2) ); */View Code
八、字符類
RegExp. (dollar)$1...(dollar)$99
註意:
要使用字符類,必須使用一下正則
要使用字符類返回結果,必須正則中有分組
/*var reg1 = /(a)/; var str1 = "abc abc abc"; reg1.test(str1); alert( RegExp.$1 );//匹配到第一個分組內的內容*/ /*var reg2 = /(baidu) (taobao) (jd)/; var str2 = "baidu taobao jd"; reg2.exec(str2); //運行正則 alert( RegExp.$3 );*/ var reg3 = /(taobao)/; var str3 = "我是taobao"; var str = str3.replace(reg3,"<b style=‘color:red‘>$1</b>"); document.write(str);View Code
九、字符串匹配正則方法
search
如果匹配函數下標位置
如果不匹配返回-1
******不支持全局*****
match
如果匹配返回數組
如果不匹配返回null
match和exec 區別
match支持全局
exec不支持全局,可以用循環遍歷出來
replace
語法:字符串.方法名稱
/* var reg1 = /a/g; var str1 = "b a c a d"; var sh = str1.search(reg1); document.write(sh); */ /* var reg2 = /a/g; var str2 = "ab ac ad"; //var arr = reg2.exec(str2); //正則.exec這個方法==》不支持全局 //document.write(arr); var arr = null; while(arr=reg2.exec(str2)){ document.write(arr); }*/ /* var reg3 = /a/g; var str3 = "ab ac ad"; var arr = str3.match(reg3); document.write(arr); */ var reg4 = /b/g; var str4 = "ab bb cb"; var str = str4.replace(reg4,"*"); document.write(str);View Code
javascript-正則表達式