<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>testjs.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--><script type="text/javascript">//返回true或者false的匹配方式function zzpp(){//test方法,測試字串,符合模式時返回true,否則返回false var re = /he/;//最簡單的Regex,將匹配he這個單詞 re = /^he$/i; re=/^[a-z]/i; re = /\s/;var str = "he"; alert(re.test(str));//false }//擷取匹配的結果function ppjg(){var osVersion = "Ubuntu 8";//其中的8表示系統主要版本號 //另一個方法exec,返回一個數組,數組的第一個元素為完整的匹配內容 re=/^[a-z]+\s+\d+$/i; //+號表示字元至少要出現1次,\s表示空白字元,\d表示一個數字 arr = re.exec(osVersion); alert(arr[0]);//將osVersion完整輸出,因為整個字串剛好匹配re //我只需要取出數字 re=/\d+/; var arr = re.exec(osVersion); alert(arr[0]);//8 }//子匹配function zpp(){ //exec返回的數組第1到n元素中包含的是匹配中出現的任意一個子匹配 re=/^[a-z]+\s+(\d+)$/i;//用()來建立子匹配 arr =re.exec(osVersion); alert(arr[0]);//整個osVersion,也就是Regex的完整匹配 alert(arr[1]);//8,第一個子匹配,事實也可以這樣取出主要版本號 alert(arr.length);//2 osVersion = "Ubuntu 8.10";//取出主要版本號和次版本號碼 re = /^[a-z]+\s+(\d+)\.(\d+)$/i;//.是Regex元字元之一,若要用它的字面意義須轉義 arr = re.exec(osVersion); alert(arr[0]);//完整的osVersion alert(arr[1]);//8 alert(arr[2]);//10 }//replace split searchfunction ppff(){ //replace方法,用於替換字串 var str ="some money"; alert(str.replace("some","much"));//much money //replace的第一個參數可以為Regex var re = /\s/;//空白字元 alert(str.replace(re,"%"));//some%money //在不知道字串中有多少空白字元時,Regex極為方便 str ="some some \tsome\t\f"; re = /\s+/; alert(str.replace(re,"#"));//但這樣只會將第一次出現的一堆空白字元替換掉 //因為一個Regex只能進行一次匹配,\s+匹配了第一個空格後就退出了 re = /\s+/g;//g,全域標誌,將使Regex匹配整個字串 alert(str.replace(re,"@"));//some@some@some@ var str = "ADF9DF9DF9", //那個文字檔中的字串; re = /9/gi, //匹配9 counter = 0; //計數器 var newstr = str = str.replace(re, function() { counter++; //每出現一次匹配,函數就被執行一次,函數的傳回值用來替換原值 return "#"; }); alert("替換次數: "+counter); //alert(str); //最後str 變成 ADF#DF#DF#" var str = "他今年22歲,她今年20歲,他的爸爸今年45歲,她的爸爸今年44歲,一共有4人" function test($1) { var gyear = (new Date()).getYear() - parseInt($1) + 1; return $1 + "(" + gyear + "年出生)"; } // var reg = new RegExp("(http://www.cnblogs.com/sgivee/admin/file://d/+)歲", "g"); var reg = /(\d+)歲/gi; var newstr = str.replace(reg, test); //alert(str); //alert(newstr); //另一個與之相似的是split var str = "a-bd-c"; var arr = str.split("-");//返回["a","bd","c"] //如果str是使用者輸入的,他可能輸入a-bd-c也可能輸入a bd c或a_bd_c,但不會是abdc(這樣就說他輸錯了) str = "a_db-c";//使用者以他喜歡的方式加分隔字元s re=/[^a-z]/i;//前面我們說^表示字元開始,但在[]裡它表示一個負字元集 //匹配任何不在指定範圍內的任一字元,這裡將匹配除字母處的所有字元 arr = str.split(re);//仍返回["a","bd","c"]; //在字串中尋找時我們常用indexOf,與之對應用於正則尋找的方法是search str = "My age is 18.Golden age!";//年齡不是一定的,我們用indexOf不能尋找它的位置 re = /\d+/; alert(str.search(re));//返回尋找到的字串開始下標10 //注意,因為尋找本身就是出現第一次就立即返回,所以無需在search時使用g標誌 //下面的代碼雖然不出錯,但g標誌是多餘的 re=/\d+/g; alert(str.search(re));//仍然是10 }function exc(){var str = "My name is CJ.Hello everyone!"; var re = /[A-Z]/;//匹配所有大寫字母 var arr = str.match(re);//返回數組 alert(arr);//數組中只會包含一個M,因為我們沒有使用全域匹配 re = /[A-Z]/g; arr = str.match(re); alert(arr);//M,C,J,H //從字串中抽取單詞 re = /\b[a-z]*\b/gi;//\b表示單詞邊界 str = "one two three four"; alert(str.match(re));//one,two,three,four }function other(){ var re = /[A-Z]/; //exec方法執行後,修改了re的lastIndex屬性, var str = "Hello,World!!!"; var arr = re.exec(str); alert(re.lastIndex);//0,因為沒有設定全域標誌 re = /[A-Z]/g; arr = re.exec(str); alert(re.lastIndex);//1 arr = re.exec(str); alert(re.lastIndex);//7 }</script> </head> <body onload="other()"> </body></html>