1.關於正則表達式
處理字符串時,有很多較為復雜的字符串用普通的字符串處理函數無法干凈的完成。比如說,可能需要驗證一個Email地址是否合法,為此需要查看許多不容易檢查的規則。這正是正則表達式的用武之地。正則表達式是功能強大而簡明的字符組,其中可以包含大量的邏輯,特別值得一提的是正則表達式相當簡短。
2.正則表達式的用處
測試用戶名(必須由字母數字下划線組成)
戶密碼(必須同時包含大寫小寫數字)
確認密碼
3.創建一個RegExp對象
創建RegExp對象實例的兩種方式:
(1)構造函數方式 var reg=new RegExp(“表達式”,“附加參數”);
(2)普通方式 var reg=/表達式/附加參數
附加參數是可選的,用來擴展正則表達式的含義,主要有三個參數: (1)g:全局匹配。 (2)i:用作忽略大小寫的參數。 (3)m:多行匹配。
例如:
//第一種
var reg=new RegExp("老羅","g");
//第二種
var reg1=/老羅/g;
4.正則表達式語法(perl風格)
Perl語言的正則表達式已經非常成熟,javascript直接拿來使用。
格式 /javascript/ 在字符串前后分別加一個斜杠
匹配函數
正則.exec(str) 匹配返回內容,否則返回null。 exec(str): exec方法使用RegExp對象實例創建時指定的正則表達式模式搜索字符串,並返回一個包含搜索結果的數組。
正則.test(str) 匹配返回true,否則返回false。 test(str): 該方法檢查一個字符串中是否存在創建RegExp對象實例時所指定的正則表達式模式,如果存在則返回true,否則返回false。
例如:
//exrc()方法 如果匹配成功返回搜索內容,否則 返回null
alert(reg1.exec(str));
//text()方法 如果匹配成功 返回true, 否則 返回false
alert(reg.test(str));
5.正則表達式的元素
正則表達式包括三種元素分別為:量詞、元字符和修飾符
量詞:
元字符:
修飾符:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script type="text/javascript"> //量詞 // + 匹配至少一個或多個前導字符 // var str1='phwhphhhhhhhwhhh'; // var reg1=/hw+h/g;//h和h之間至少有一個或多個w的字符 // var reg1=/ph+/g;//一個p和一個或多個h在一塊的字符 // var reg1=/wh+/g;//一個w和一個或多個h在一塊的字符 // var reg1=/h+/g;//一個或多個h在一塊的字符 // alert(str1.replace(reg1,'0')); // * 匹配至少0個或多個前導字符 // var str2="luo"; // var reg2=/l*/g;//..u.o. 前引號后引號也算0個 // alert(str2.replace(reg2,'.')); // var str3='phhhhhhhhp'; // var reg3=/wh*p/g;//找不到 // alert(str3.replace(reg3,'0')) // ? 匹配至少0個或1個前導字符 // var str4='hello,wolhld'; // var reg4=/he?/g;//一個h后面跟0個或一個e // alert(str4.replace(reg4,'0')); // . 通配符 // var str5='zhangsanzhangsan'; //// var reg5=/./;//0hangsanzhangsan //// var reg5=/./g;//0000000000000000 // var reg5=/zh.ng.an/;//0zhangsan // alert(str5.replace(reg5,'0')) // {X}匹配x個前導字符 // var str5 = "wwwhhhhaaattt"; // var reg5 = /h{3}/g; // alert(str5.replace(reg5,"#")); // // var str6 = "wwwhhhhhhhaaattt"; // var reg6 = /h{3,4}/g; // alert(str6.replace(reg6,"#")); // // var str7 = "wwwhhhaaattt"; // var reg7 = /h{3,}/g; // alert(str7.replace(reg7,"#")); // // var str8 = "1219539627@163.com"; // var reg8 = /^\w{4,10}@163\.(com|cn)$/g; // alert(str8.replace(reg8,"#")); //$結尾 // var str9 = "what are you doing"; // var reg9 = /doing$/; // alert(str9.replace(reg9,"#")); // // var str10 = "what"; // var reg10 = /^what$/g;//^開頭 // alert(str10.replace(reg10,"#")); // // var str11 = "aAbcdef"; // var reg11 = /[a-z]/g; // alert(str11.replace(reg11,"#")); //匹配手機號 //var cellphone = "15215212345"; //var regNum = /^1[0-9]{10}$/; //alert(regNum.test(cellphone)); //元字符 //var str12 = "adebfc"; //var reg12 = /[^abc]/g; //alert(str12.replace(reg12,"#")); //var str13 = "a d ,"; //var reg13 = /\S/g;//查找非空白字符。 //alert(str13.replace(reg13,"#")); // //var str14 = "aaaaaa"; //var reg14 = /\B/g;//匹配非單詞邊界。 //alert(str14.replace(reg14,"#")); //匹配郵箱 // var email = "123456@qq.com"; // var email1 = "123456df"; // var email2 = "123456asfsdf"; // var email3 = "12345sdfsdf"; // var regE = /^\w{4,16}@(qq|163|139)\.(com|cn)$/; // alert(regE.test(email)); </script> </body> </html>