javascript RegExp 使用说明
一:正则表达式的创建方式
1.文字格式,使用方法如下:
/pattern/flags(即:/模式/标记)
2.RegExp构造函数,使用方法如下:
newRegExp("pattern"[,"flags"])(即:newRegExp("模式"[,"标记"]))
参数:
pattern(模式):表示正则表达式的文本
flags(标记):如果指定此项,flags可以是下面之一:
g:globalmatch(全定匹配)
i:ignorecase(忽略大小写)
gi:bothglobalmatchandignorecase(匹配所有可能的值,也忽略大小写)
注意:文字格式中的参数不要使用引号标记,二够造器函数的参数则要使用引号标记。所以下面的表达式
是等价的:
/ab+c/i ==================== newRegExp("ab+c","i")
描述:
当使用构造器函数创建正则表达式的时候,必须使用正常的字符串避开规则(在字符串中加入前导字符\)是必须的。
例如,下面的两条语句是等价的:
re=newRegExp("\\w+");
re=/\w+/
注意:RegExp预置了$属性
$1,...,$9属性
用圆括号括着的匹配子串,如果有的话。
是RegExp的属性
静态,只读
在JavaScript1.2,NES3.0以上版本提供
描述:因为input是静态属性,不是个别正则表达式对象的属性。你可以使用RegExp.input访问该
属性。
能加上圆括号的子串的数量不受限制,但正则表达式对象只能保留最后9条。如果你要访问所有的
圆括号内的匹配字串,你可以使用返回的数组。
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"> <HTML> <HEAD> <TITLE>NewDocument</TITLE> <SCRIPTLANGUAGE="JavaScript1.2"> varregexp=newRegExp("(\\w+)\\s(\\w+)"); str="JohnSmith"; 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使用实例:
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"> <HTML> <HEAD> <TITLE>NewDocument</TITLE> <SCRIPTLANGUAGE="JavaScript1.2"> varstr="1plus2equal3"; varstr2="11/23/55"; varresults=str.match(newRegExp("\\d+","gi")); for(vari=0;i<results.length;i++){ document.write(results[i]+"<br/>"); } varres=str2.match(newRegExp("(\\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> functiondateCheck(value){ re=newRegExp("(\\d\\d?)/(\\d\\d?)/(\\d\\d)"); varresult=value.match(re); if(result){ if(result[0].length!=value.length){ alert("Wrongdateformat.ThecorrectformatshouldbeMM/dd/yy.") returnfalse; }else{ vart=result[3]; vary=parseInt("20"+t); varm=parseInt(result[1],10)-1; varday=parseInt(result[2],10); vard=newDate(y,m,day); if(d.getFullYear()!=y||d.getMonth()!=m||d.getDate()!=day){ alert("errordate!") returnfalse; }else{ varsm=result[1].length==1?'0'+result[1]:result[1]; varsday=result[2].length==1?'0'+result[2]:result[2]; varsy=result[3]; else returnsm+'/'+sday+'/'+sy; } } }else{ alert("Wrongdateformat.ThecorrectformatshouldbeMM/dd/yy."); returnfalse; } }