javascript---正則式(一),javascript---式(
Regex(regular expression)是一個描述字元模式的對象.用來驗證用戶端的輸入資料是否符合既定規則,如我們限制輸入字元長度或格式等.因為用戶端驗證,可以節約大量的伺服器端的系統資源,並且提供更好的使用者體驗.
①建立Regex
兩種建立方式:
var box = newRegExp('box','ig');//第一個參數可選字串,第二個參數模式修飾符var box =/box/ig;//直接用兩個反斜線
②測試Regex
//在字串中測試模式比對,返回true或falsevar pattern = /box/i;var str = 'box';alert(pattern.test(str)); //使用exec返回匹配數組var pattern = /box/i;var str = 'box';alert(pattern.exec(str));
③使用字串的Regex方法
/*使用match方法擷取匹配數組*/var pattern =/box/ig;//全域搜尋var str = 'this is abox!that is a box too!';alert(str.match(pattern));//box,box,匹配到兩個boxalert(str.match(pattern).length);//2,擷取數組長度 /*使用search來尋找匹配資料*/var pattern =/Box/ig;//全域不區分大小寫搜尋.注意這裡search方法尋找到即 返回,也就是說g可有可無.var str = 'this is abox!that is a box too!';alert(str.search(pattern));//10,尋找到返回位置,否則返回-1 /*使用replace替換匹配到的資料*/var pattern = /box/ig;var str = 'this is abox!that is a box too!';alert(str.replace(pattern,'tom'));//將box替換成tom
運行結果:
/*使用split拆分字串數組*/var pattern=/ /ig;var str = 'this is abox!that is a box too!';alert(str.split(pattern));//將空格拆分開組成數組
運行結果:
/*使用靜態屬性*/var pattern = /(g)oogle/;var str = 'this isgoogle!';pattern.test(str);alert(RegExp.input);//thisis google!alert(RegExp.leftContext);//thisisalert(RegExp.rightContext);//!alert(RegExp.lastMatch);//googlealert(RegExp.lastParen);//galert(RegExp.multiline);//false,IE中是undefined
/*使用執行個體屬性*/var pattern = /google/ig;alert(pattern.global);//true,是否全域了alert(pattern.ignoreCase);//true,是否忽略大小寫alert(pattern.multiline);//false,是否支援換行alert(pattern.lastIndex);//0,下次的匹配位置alert(pattern.source);//google,Regex的源字串
/*使用點元字元*/varpattern = /g...gle/;//...匹配三個任一字元var str = 'gooogle';alert(pattern.test(str));//true /*使用字元類匹配*/var pattern =/g[a-zA-Z]*gle/;//[a-z]*表示任意個a-z中的字元,不區分大小寫,自己可以嘗試將*去掉[]內的修改看看效果var str = 'google';alert(pattern.test(str));//true varpattern = /g[^0-9]*gle/;//[^0-9]*表示任意非0~9的字元var str = 'go0gle';alert(pattern.test(str));//false var pattern =/[a-z][A-Z]/;//[a-z]或[A-Z]任意多個字元,末尾有或沒有"+"無影響var str = 'gOOGLE';alert(pattern.test(str));//true /*使用元符號匹配*/var pattern =/g\w*gle/;//\w*匹配任意多個所有字母數字和_var str = 'goo_gle';alert(pattern.test(str));//true var pattern =/\D{7,}/;//\D{7,}匹配至少7個非數字var str = 'googleJ';alert(pattern.test(str));//true
var pattern =/goo\sgle/;//\s可以匹配到空格var str = 'goo gle';alert(pattern.test(str));//true var pattern =/google\b/;//\b可以匹配是否到了邊界var str = 'googlell';alert(pattern.test(str));//false
/*使用錨元字元匹配*/ var pattern =/^google$/;//^從頭開始匹配,$從結尾開始匹配var str = 'google';alert(pattern.test(str));//true
/*重複匹配*/var pattern =/g*gle/;//匹配0~n個var str ='google';//*,?,+,{n,m}alert(pattern.test(str));//true
/*使用或模式比對*/var pattern =/google|baidu|bing/;//google|baidu|bing三種其中一種字串var str = 'google';alert(pattern.test(str));//true