一:正則表達式的創建方式
1.文字格式,使用方法如下:
/pattern/flags(即:/模式/標記)
2.RegExp構造函數,使用方法如下:
new RegExp("pattern"[,"flags"])(即:new RegExp("模式"[,"標記"]))
參數:
pattern(模式):表示正則表達式的文本
flags(標記):如果指定此項,flags可以是下面之一:
g:global match(全定匹配)
i:ignore case(忽略大小寫)
gi:both global match and ignore case(匹配所有可能的值,也忽略大小寫)
注意:文字格式中的參數不要使用引號標記,二夠造器函數的參數則要使用引號標記。所以下面的表達式
是等價的:
/ab+c/i ==================== new RegExp("ab+c","i")
描述:
當使用構造器函數創建正則表達式的時候,必須使用正常的字符串避開規則(在字符串中加入前導字符/)是必須的。
例如,下面的兩條語句是等價的:
re=new RegExp("//w+");
re=//w+/
注意:RegExp預置了$屬性
$1, ..., $9屬性
用圓括號括著的匹配子串,如果有的話。
是RegExp的屬性
靜態,只讀
在JavaScript 1.2, NES 3.0以上版本提供
描述:因為input是靜態屬性,不是個別正則表達式對象的屬性。你可以使用RegExp.input 訪問該
屬性。
能加上圓括號的子串的數量不受限制,但正則表達式對像只能保留最後9 條。如果你要訪問所有的
圓括號內的匹配字串,你可以使用返回的數組。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <SCRIPT LANGUAGE="JavaScript1.2"> var regexp = new RegExp("(//w+)//s(//w+)"); str = "John Smith"; newstr=str.replace(regexp,"$2"); newstr2=str.replace(regexp,"$1"); document.write("原字符串:"+str+"<br/>"); document.write(newstr+"<br/>"); document.write(newstr2+"<br/>"); document.write('$1='+RegExp.$1+" $2="+RegExp.$2); </SCRIPT> </HEAD> <BODY> </BODY> </HTML>二: match() 方法可在字符串內檢索指定的值,或找到一個或多個正則表達式的匹配。它返回指定的值,而不是字符串的位置。
文法
stringObject.match(searchvalue)
stringObject.match(regexp)參數描述
searchvalue 必需。規定要檢索的字符串值。
regexp 必需。規定要匹配的模式的RegExp 對象。如果該參數不是RegExp 對象,則需要首先把它傳遞給RegExp 構造函數,將其轉換為RegExp 對象。
返回值
存放匹配結果的數組。該數組的內容依賴於regexp 是否具有全局標誌g。
說明
match() 方法將檢索字符串stringObject,以找到一個或多個與regexp 匹配的文本。這個方法的行為在很大程度上有賴於regexp 是否具有標誌g。
如果regexp 沒有標誌g,那麼match() 方法就只能在stringObject 中執行一次匹配。如果沒有找到任何匹配的文本, match() 將返回null。否則,它將返回一個數組,其中存放了與它找到的匹配文本有關的信息。
match使用實例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <SCRIPT LANGUAGE="JavaScript1.2"> var str="1 plus 2 equal 3"; var str2="11/23/55"; var results=str.match(new RegExp("//d+","gi")); for(var i=0;i<results.length;i++){ document.write(results[i]+"<br/>"); } var res=str2.match(new RegExp("(//d//d?)/(//d//d?)/(//d//d)")); if(str2.length == res[0].length){ document.write(res[1]+"<br/>"); document.write(res[2]+"<br/>"); document.write(res[3]+"<br/>"); } </SCRIPT> </HEAD> <BODY> </BODY> </HTML> function dateCheck(value) { re = new RegExp("(//d//d?)/(//d//d?)/(//d//d)"); var result = value.match (re); if (result){ if (result[0].length != value.length){ alert ("Wrong date format. The correct format should be MM/dd/yy.") return false; }else{ var t = result[3]; var y = parseInt("20" + t); var m = parseInt(result[1], 10) - 1; var day = parseInt(result[2], 10); var d = new Date(y, m, day); if (d.getFullYear() != y || d.getMonth() != m || d.getDate() != day){ alert ("error date!") return false; }else{ var sm = result[1].length == 1?'0' + result[1]:result[1]; var sday = result[2].length == 1?'0' + result[2]: result[2]; var sy = result[3]; else return sm + '/' + sday + '/' + sy; } } }else{ alert ("Wrong date format. The correct format should be MM/dd/yy."); return false; } }