JS的正則表達(dá)式 //校驗(yàn)是否全由數(shù)字組成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true }
//校驗(yàn)登錄名:只能輸入5-20個(gè)以字母開頭,、可帶數(shù)字、“_”,、“.”的字串
- function isRegisterUserName(s)
- {
- var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
- if (!patrn.exec(s)) return false
- return true
- }
function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
if (!patrn.exec(s)) return false
return true
}
//校驗(yàn)用戶姓名:只能輸入1-30個(gè)以字母開頭的字串
- function isTrueName(s)
- {
- var patrn=/^[a-zA-Z]{1,30}$/;
- if (!patrn.exec(s)) return false
- return true
- }
- }}
-
-
- <PRE class=java name="code">function isPasswd(s)
- {
- var patrn=/^(\w){6,20}$/;
- if (!patrn.exec(s)) return false
- return true
- }
- </PRE>
- <BR>
- <BR>
- <BR><PRE class=java name="code">function isTel(s)
- {
-
- var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
- if (!patrn.exec(s)) return false
- return true
- }
- </PRE>
- <BR>
- <BR>
- <BR><PRE class=java name="code">function isMobil(s)
- {
- var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
- if (!patrn.exec(s)) return false
- return true
- }
- </PRE>
- <BR>
- <BR>
- <BR><PRE class=java name="code">function isPostalCode(s)
- {
-
- var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
- if (!patrn.exec(s)) return false
- return true
- }
- </PRE>
- <BR>
- <BR>
- <BR><PRE class=java name="code">function isSearch(s)
- {
- var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\]
- [\]\{\}:;'\,.<>?]{0,19}$/;
- if (!patrn.exec(s)) return false
- return true
- }
-
- function isIP(s)
- {
- var patrn=/^[0-9.]{1,20}$/;
- if (!patrn.exec(s)) return false
- return true
- }
- </PRE>
- <BR>
- <BR><SPAN style="FONT-SIZE: 18pt">正則表達(dá)式</SPAN>
- <BR><PRE class=java name="code">"^\\d+$"
- "^[0-9]*[1-9][0-9]*$"
- "^((-\\d+)|(0+))$"
- "^-[0-9]*[1-9][0-9]*$"
- "^-?\\d+$"
- "^\\d+(\\.\\d+)?$"
- "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"
-
- "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"
- "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"
-
- "^(-?\\d+)(\\.\\d+)?$"
- "^[A-Za-z]+$"
- "^[A-Z]+$"
- "^[a-z]+$"
- "^[A-Za-z0-9]+$"
- "^\\w+$"
- "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"
- "^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$" //url
- "^[A-Za-z0-9_]*$"
- </PRE>
- <BR>
- <BR><SPAN style="FONT-SIZE: 18pt">正則表達(dá)式使用詳解</SPAN>
- <BR>
- <BR>簡(jiǎn)介
- <BR>
- <BR>簡(jiǎn)單的說,,正則表達(dá)式是一種可以用于模式匹配和替換的強(qiáng)有力的工具,。其作用如下:
- <BR>測(cè)試字符串的某個(gè)模式。例如,,可以對(duì)一個(gè)輸入字符串進(jìn)行測(cè)試,,看在該字符串是否存在一個(gè)電話號(hào)碼模式或一個(gè)信用卡號(hào)碼模式。這稱為數(shù)據(jù)有效性驗(yàn)證,。
- <BR>替換文本,。可以在文檔中使用一個(gè)正則表達(dá)式來標(biāo)識(shí)特定文字,,然后可以全部將其刪除,,或者替換為別的文字。
- <BR>根據(jù)模式匹配從字符串中提取一個(gè)子字符串,??梢杂脕碓谖谋净蜉斎胱侄沃胁檎姨囟ㄎ淖帧?nbsp;
- <BR>
- <BR>基本語法
- <BR>
- <BR>在對(duì)正則表達(dá)式的功能和作用有了初步的了解之后,,我們就來具體看一下正則表達(dá)式的語法格式,。
- <BR>
- <BR>正則表達(dá)式的形式一般如下:
- <BR>
- <BR>/love/ 其中位于“/”定界符之間的部分就是將要在目標(biāo)對(duì)象中進(jìn)行匹配的模式。用戶只要把希望查找匹配對(duì)象的模式內(nèi)容放入“/”定界符之間即可,。為了能夠使用戶更加靈活的定制模式內(nèi)容,,正則表達(dá)式提供了專門的“元字符”。所謂元字符就是指那些在正則表達(dá)式中具有特殊意義的專用字符,,可以用來規(guī)定其前導(dǎo)字符(即位于元字符前面的字符)在目標(biāo)對(duì)象中的出現(xiàn)模式,。
- <BR>較為常用的元字符包括: “+”, “*”,,以及 “?”,。
- <BR>
- <BR>“+”元字符規(guī)定其前導(dǎo)字符必須在目標(biāo)對(duì)象中連續(xù)出現(xiàn)一次或多次,。
- <BR>
- <BR>“*”元字符規(guī)定其前導(dǎo)字符必須在目標(biāo)對(duì)象中出現(xiàn)零次或連續(xù)多次。
- <BR>
- <BR>“?”元字符規(guī)定其前導(dǎo)對(duì)象必須在目標(biāo)對(duì)象中連續(xù)出現(xiàn)零次或一次,。
- <BR>
- <BR>下面,,就讓我們來看一下正則表達(dá)式元字符的具體應(yīng)用,。
- <BR>
- <BR>/fo+/ 因?yàn)樯鲜稣齽t表達(dá)式中包含“+”元字符,表示可以與目標(biāo)對(duì)象中的 “fool”, “fo”, 或者 “football”等在字母f后面連續(xù)出現(xiàn)一個(gè)或多個(gè)字母o的字符串相匹配,。
- <BR>
- <BR>/eg*/ 因?yàn)樯鲜稣齽t表達(dá)式中包含“*”元字符,,表示可以與目標(biāo)對(duì)象中的 “easy”, “ego”, 或者 “egg”等在字母e后面連續(xù)出現(xiàn)零個(gè)或多個(gè)字母g的字符串相匹配。
- <BR>
- <BR>/Wil?/ 因?yàn)樯鲜稣齽t表達(dá)式中包含“?”元字符,,表示可以與目標(biāo)對(duì)象中的 “Win”, 或者“Wilson”,等在字母i后面連續(xù)出現(xiàn)零個(gè)或一個(gè)字母l的字符串相匹配。
- <BR>
- <BR>有時(shí)候不知道要匹配多少字符,。為了能適應(yīng)這種不確定性,正則表達(dá)式支持限定符的概念。這些限定符可以指定正則表達(dá)式的一個(gè)給定組件必須要出現(xiàn)多少次才能滿足匹配,。
- <BR>
- <BR>{n} n 是一個(gè)非負(fù)整數(shù),。匹配確定的 n 次,。例如,,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個(gè) o。
- <BR>
- <BR>{n,} n 是一個(gè)非負(fù)整數(shù),。至少匹配 n 次,。例如,,'o{2,}' 不能匹配 "Bob" 中的 'o',,但能匹配 "foooood" 中的所有 o,。'o{1,}' 等價(jià)于 'o+'。'o{0,}' 則等價(jià)于 'o*',。
- <BR>
- <BR>{n,m} m 和 n 均為非負(fù)整數(shù),,其中n <= m。最少匹配 n 次且最多匹配 m 次,。例如,,"o{1,3}" 將匹配 "fooooood" 中的前三個(gè) o。'o{0,1}' 等價(jià)于 'o?',。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格,。
- <BR>
- <BR>除了元字符之外,用戶還可以精確指定模式在匹配對(duì)象中出現(xiàn)的頻率,。例如,,/jim {2,6}/ 上述正則表達(dá)式規(guī)定字符m可以在匹配對(duì)象中連續(xù)出現(xiàn)2-6次,因此,,上述正則表達(dá)式可以同jimmy或jimmmmmy等字符串相匹配,。
- <BR>在對(duì)如何使用正則表達(dá)式有了初步了解之后,我們來看一下其它幾個(gè)重要的元字符的使用方式,。
- <BR><PRE class=java name="code">\s:用于匹配單個(gè)空格符,,包括tab鍵和換行符;
- \S:用于匹配除單個(gè)空格符之外的所有字符,;
- \d:用于匹配從0到9的數(shù)字,;
- \w:用于匹配字母,數(shù)字或下劃線字符,;
- \W:用于匹配所有與\w不匹配的字符,;
- . :用于匹配除換行符之外的所有字符。
- </PRE>
- <BR>(說明:我們可以把\s和\S以及\w和\W看作互為逆運(yùn)算)
- <BR>下面,,我們就通過實(shí)例看一下如何在正則表達(dá)式中使用上述元字符,。
- <BR>/\s+/ 上述正則表達(dá)式可以用于匹配目標(biāo)對(duì)象中的一個(gè)或多個(gè)空格字符。
- <BR>/\d000/ 如果我們手中有一份復(fù)雜的財(cái)務(wù)報(bào)表,,那么我們可以通過上述正則表達(dá)式輕而易舉的查找到所有總額達(dá)千元的款項(xiàng),。
- <BR>除了我們以上所介紹的元字符之外,,正則表達(dá)式中還具有另外一種較為獨(dú)特的專用字符,即定位符,。定位符用于規(guī)定匹配模式在目標(biāo)對(duì)象中的出現(xiàn)位置,。 較為常用的定位符包括: “^”, “$”, “\b” 以及 “\B”。
- <BR><PRE class=java name="code">“^”定位符規(guī)定匹配模式必須出現(xiàn)在目標(biāo)字符串的開頭
- “$”定位符規(guī)定匹配模式必須出現(xiàn)在目標(biāo)對(duì)象的結(jié)尾
- “\b”定位符規(guī)定匹配模式必須出現(xiàn)在目標(biāo)字符串的開頭或結(jié)尾的兩個(gè)邊界之一
- “\B”定位符則規(guī)定匹配對(duì)象必須位于目標(biāo)字符串的開頭和結(jié)尾兩個(gè)邊界之內(nèi),,
- 即匹配對(duì)象既不能作為目標(biāo)字符串的開頭,,也不能作為目標(biāo)字符串的結(jié)尾。
- </PRE>
- <BR>同樣,,我們也可以把“^”和“$”以及“\b”和“\B”看作是互為逆運(yùn)算的兩組定位符,。舉例來說: /^hell/ 因?yàn)樯鲜稣齽t表達(dá)式中包含“^”定位符,所以可以與目標(biāo)對(duì)象中以 “hell”, “hello”或“hellhound”開頭的字符串相匹配,。 /ar$/ 因?yàn)樯鲜稣齽t表達(dá)式中包含“$”定位符,,所以可以與目標(biāo)對(duì)象中以 “car”, “bar”或 “ar” 結(jié)尾的字符串相匹配。 /\bbom/ 因?yàn)樯鲜稣齽t表達(dá)式模式以“\b”定位符開頭,,所以可以與目標(biāo)對(duì)象中以 “bomb”, 或 “bom”開頭的字符串相匹配,。/man\b/ 因?yàn)樯鲜稣齽t表達(dá)式模式以“\b”定位符結(jié)尾,所以可以與目標(biāo)對(duì)象中以 “human”, “woman”或 “man”結(jié)尾的字符串相匹配,。
- <BR>為了能夠方便用戶更加靈活的設(shè)定匹配模式,,正則表達(dá)式允許使用者在匹配模式中指定某一個(gè)范圍而不局限于具體的字符。例如:
- <BR><PRE class=java name="code">/[A-Z]/ 上述正則表達(dá)式將會(huì)與從A到Z范圍內(nèi)任何一個(gè)大寫字母相匹配,。
- /[a-z]/ 上述正則表達(dá)式將會(huì)與從a到z范圍內(nèi)任何一個(gè)小寫字母相匹配,。
- /[0-9]/ 上述正則表達(dá)式將會(huì)與從0到9范圍內(nèi)任何一個(gè)數(shù)字相匹配。
- /([a-z][A-Z][0-9])+/ 上述正則表達(dá)式將會(huì)與任何由字母和數(shù)字組成的字符串,,如 “aB0” 等相匹配,。
- </PRE>
- <BR>這里需要提醒用戶注意的一點(diǎn)就是可以在正則表達(dá)式中使用 “()” 把字符串組合在一起。“()”符號(hào)包含的內(nèi)容必須同時(shí)出現(xiàn)在目標(biāo)對(duì)象中,。因此,,上述正則表達(dá)式將無法與諸如 “abc”等的字符串匹配,因?yàn)?#8220;abc”中的最后一個(gè)字符為字母而非數(shù)字,。
- <BR>如果我們希望在正則表達(dá)式中實(shí)現(xiàn)類似編程邏輯中的“或”運(yùn)算,在多個(gè)不同的模式中任選一個(gè)進(jìn)行匹配的話,,可以使用管道符 “|”,。例如:/to|too|2/ 上述正則表達(dá)式將會(huì)與目標(biāo)對(duì)象中的 “to”, “too”, 或 “2” 相匹配。
- <BR>正則表達(dá)式中還有一個(gè)較為常用的運(yùn)算符,,即否定符 “[^]”,。與我們前文所介紹的定位符 “^” 不同,否定符 “[^]”規(guī)定目標(biāo)對(duì)象中不能存在模式中所規(guī)定的字符串,。例如:/[^A-C]/ 上述字符串將會(huì)與目標(biāo)對(duì)象中除A,,B,,和C之外的任何字符相匹配。一般來說,,當(dāng)“^”出現(xiàn)在 “[]”內(nèi)時(shí)就被視做否定運(yùn)算符,;而當(dāng)“^”位于“[]”之外,或沒有“[]”時(shí),,則應(yīng)當(dāng)被視做定位符,。
- <BR>最后,當(dāng)用戶需要在正則表達(dá)式的模式中加入元字符,,并查找其匹配對(duì)象時(shí),,可以使用轉(zhuǎn)義符“\”。例如:/Th\*/ 上述正則表達(dá)式將會(huì)與目標(biāo)對(duì)象中的“Th*”而非“The”等相匹配,。
- <BR>在構(gòu)造正則表達(dá)式之后,,就可以象數(shù)學(xué)表達(dá)式一樣來求值,也就是說,,可以從左至右并按照一個(gè)優(yōu)先級(jí)順序來求值,。優(yōu)先級(jí)如下:
- <BR><PRE class=java name="code">1.\ 轉(zhuǎn)義符
- 2.(), (?:), (?=), [] 圓括號(hào)和方括號(hào)
- 3.*, +, ?, {n}, {n,}, {n,m} 限定符
- 4.^, $, \anymetacharacter 位置和順序
- 5.|“或”操作
- </PRE>
- <BR>
- <BR><SPAN style="FONT-SIZE: 18pt">使用實(shí)例</SPAN>
- <BR>在JavaScript 1.2中帶有一個(gè)功能強(qiáng)大的RegExp()對(duì)象,可以用來進(jìn)行正則表達(dá)式的匹配操作,。其中的test()方法可以檢驗(yàn)?zāi)繕?biāo)對(duì)象中是否包含匹配模式,,并相應(yīng)的返回true或false。
- <BR>我們可以使用JavaScript編寫以下腳本,,驗(yàn)證用戶輸入的郵件地址的有效性,。
- <BR><PRE class=java name="code"><html>
- <head>
- <script language="Javascript1.2">
- <!-- start hiding
- function verifyAddress(obj)
- {
- var email = obj.email.value;
- var pattern =
- /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
- flag = pattern.test(email);
- if(flag)
- {
- alert(“Your email address is correct!”);
- return true;
- }
- else
- {
- alert(“Please try again!”);
- return false;
- }
- }
-
- </script>
- </head>
- <body>
- <form onSubmit="return verifyAddress(this);">
- <input name="email" type="text">
- <input type="submit">
- </form>
- </body>
- </html>
- </PRE>
- <BR>
- <BR><SPAN style="FONT-SIZE: 18pt">正則表達(dá)式對(duì)象</SPAN>
- <BR>本對(duì)象包含正則表達(dá)式模式以及表明如何應(yīng)用模式的標(biāo)志。
- <BR><PRE class=java name="code">語法 1 re = /pattern/[flags]
- 語法 2 re = new RegExp("pattern",["flags"])
- </PRE>
- <BR>參數(shù)
- <BR>re
- <BR>必選項(xiàng),。將要賦值為正則表達(dá)式模式的變量名,。
- <BR>
- <BR>Pattern
- <BR>必選項(xiàng)。要使用的正則表達(dá)式模式,。如果使用語法 1,,用 "/" 字符分隔模式。如果用語法 2,,用引號(hào)將模式引起來,。
- <BR>
- <BR>Flags
- <BR>可選項(xiàng)。如果使用語法 2 要用引號(hào)將 flag 引起來,。標(biāo)志可以組合使用,,可用的有:
- <BR><PRE class=java name="code">g (全文查找出現(xiàn)的所有 pattern)
- i (忽略大小寫)
- m (多行查找)
- </PRE>
- <BR>
- <BR><SPAN style="FONT-SIZE: 18pt">示例</SPAN>
- <BR>下面的示例創(chuàng)建一個(gè)包含正則表達(dá)式模式及相關(guān)標(biāo)志的對(duì)象(re),向您演示正則表達(dá)式對(duì)象的用法,。在本例中,,作為結(jié)果的正則表達(dá)式對(duì)象又用于 match 方法中:
- <BR><PRE class=java name="code">function MatchDemo()
- {
- var r, re;
- var s = "The rain in Spain falls mainly in the plain";
- re = new RegExp("ain","g");
- r = s.match(re);
- return(r);
- }
- </PRE>
- <BR>
- <BR>返回值: ain,ain,ain,ain\\
- <BR>屬性 lastIndex 屬性 | source 屬性\\
- <BR>方法 compile 方法 | exec 方法 | test 方法\\
- <BR>要求 版本 3\\
- <BR>請(qǐng)參閱 RegExp 對(duì)象 | 正則表達(dá)式語法 | String 對(duì)象\\
- <BR>
- <BR><SPAN style="FONT-SIZE: 18pt">exec 方法</SPAN>
- <BR>用正則表達(dá)式模式在字符串中運(yùn)行查找,,并返回包含該查找結(jié)果的一個(gè)數(shù)組。
- <BR>rgExp.exec(str)
- <BR>
- <BR>參數(shù)
- <BR>
- <BR>rgExp
- <BR>必選項(xiàng),。包含正則表達(dá)式模式和可用標(biāo)志的正則表達(dá)式對(duì)象,。
- <BR>
- <BR>str
- <BR>必選項(xiàng)。要在其中執(zhí)行查找的 String 對(duì)象或字符串文字,。
- <BR>
- <BR>說明\\
- <BR>如果 exec 方法沒有找到匹配,,則它返回 null。如果它找到匹配,,則 exec 方法返回一個(gè)數(shù)組,,并且更新全局 RegExp 對(duì)象的屬性,以反映匹配結(jié)果,。數(shù)組的0元素包含了完整的匹配,,而第1到n元素中包含的是匹配中出現(xiàn)的任意一個(gè)子匹配。這相當(dāng)于沒有設(shè)置全局標(biāo)志 (g) 的 match 方法,。
- <BR>如果為正則表達(dá)式設(shè)置了全局標(biāo)志,,exec 從以 lastIndex 的值指示的位置開始查找。如果沒有設(shè)置全局標(biāo)志,,exec 忽略 lastIndex 的值,,從字符串的起始位置開始搜索。
- <BR>
- <BR>exec 方法返回的數(shù)組有三個(gè)屬性,,分別是 input,、index 和 lastIndex。Input 屬性包含了整個(gè)被查找的字符串,。Index 屬性中包含了整個(gè)被查找字符串中被匹配的子字符串的位置,。LastIndex 屬性中包含了匹配中最后一個(gè)字符的下一個(gè)位置。
- <BR>
- <BR>示例\\
- <BR>下面的例子舉例說明了 exec 方法的用法:
- <BR><PRE class=java name="code">function RegExpTest()
- {
- var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())
- if (ver >= 5.5){
- var src = "The rain in Spain falls mainly in the plain.";
- var re = /\w+/g;
- var arr;
- while ((arr = re.exec(src)) != null)
- document.write(arr.index + "-" + arr.lastIndex + arr + "\t");
- }
- else{
- alert("請(qǐng)使用 JScript 的更新版本");
- }
- }
- </PRE>
- <BR>
- <BR>返回值:0-3The 4-8rain 9-11in 12-17Spain 18-23falls 24-30mainly 31-33in 34-37the 38-43plain
- <BR>
- <BR>test 方法\\
- <BR>返回一個(gè) Boolean 值,它指出在被查找的字符串中是否存在模式,。
- <BR>rgexp.test(str)
- <BR>
- <BR>參數(shù)\\
- <BR>rgexp
- <BR>必選項(xiàng),。包含正則表達(dá)式模式或可用標(biāo)志的正則表達(dá)式對(duì)象。
- <BR>
- <BR>str
- <BR>必選項(xiàng),。要在其上測(cè)試查找的字符串,。
- <BR>
- <BR>說明
- <BR>test 方法檢查在字符串中是否存在一個(gè)模式,如果存在則返回 true,,否則就返回 false。
- <BR>全局 RegExp 對(duì)象的屬性不由 test 方法來修改。
- <BR>
- <BR>示例
- <BR>下面的例子舉例說明了 test 方法的用法:
- <BR><PRE class=java name="code">function TestDemo(re, s)
- {
- var s1;
-
- if (re.test(s))
- s1 = " contains ";
- else
- s1 = " does not contain ";
- return("'" + s + "'" + s1 + "'"+ re.source + "'");
- }
- </PRE>
- <BR>
- <BR>函數(shù)調(diào)用:document.write (TestDemo(/ain+/ ,"The rain in Spain falls mainly in the plain."));
- <BR>
- <BR>返回值:'The rain in Spain falls mainly in the plain.' contains 'ain+'
- <BR>
- <BR><SPAN style="FONT-SIZE: 18pt">match 方法</SPAN>
- <BR>使用正則表達(dá)式模式對(duì)字符串執(zhí)行查找,,并將包含查找的結(jié)果作為數(shù)組返回,。\\
- <BR>stringObj.match(rgExp)
- <BR>
- <BR>參數(shù)\\
- <BR>stringObj
- <BR>必選項(xiàng)。對(duì)其進(jìn)行查找的 String 對(duì)象或字符串文字,。
- <BR>
- <BR>rgExp
- <BR>必選項(xiàng),。為包含正則表達(dá)式模式和可用標(biāo)志的正則表達(dá)式對(duì)象。也可以是包含正則表達(dá)式模式和可用標(biāo)志的變量名或字符串文字,。
- <BR>
- <BR>說明\\
- <BR>如果 match 方法沒有找到匹配,,返回 null。如果找到匹配返回一個(gè)數(shù)組并且更新全局 RegExp 對(duì)象的屬性以反映匹配結(jié)果,。
- <BR>match 方法返回的數(shù)組有三個(gè)屬性:input,、index 和 lastIndex。Input 屬性包含整個(gè)的被查找字符串,。Index 屬性包含了在整個(gè)被查找字符串中匹配的子字符串的位置,。LastIndex 屬性包含了最后一次匹配中最后一個(gè)字符的下一個(gè)位置。
- <BR>如果沒有設(shè)置全局標(biāo)志 (g),,數(shù)組的 0 元素包含整個(gè)匹配,,而第 1 到 n 元素包含了匹配中曾出現(xiàn)過的任一個(gè)子匹配。這相當(dāng)于沒有設(shè)置全局標(biāo)志的 exec 方法,。如果設(shè)置了全局標(biāo)志,,元素 0 到 n 中包含所有匹配。
- <BR>
- <BR>示例\\
- <BR>下面的示例演示了match 方法的用法:
- <BR><PRE class=java name="code">function MatchDemo()
- {
- var r, re;
- var s = "The rain in Spain falls mainly in the plain";
- re = /ain/i;
- r = s.match(re);
- return(r);
- }
- </PRE>
- <BR>返回值:ain
- <BR>
- <BR>本示例說明帶 g 標(biāo)志設(shè)置的 match 方法的用法,。
- <BR><PRE class=java name="code">function MatchDemo()
- {
- var r, re;
- var s = "The rain in Spain falls mainly in the plain";
- re = /ain/ig;
- r = s.match(re);
- return(r);
-
- }
- </PRE>
- <BR>返回值:ain,ain,ain,ain
- <BR>
- <BR>上面幾行代碼演示了字符串文字的 match 方法的用法,。
- <BR><PRE class=java name="code">var r, re = "Spain";
- r = "The rain in Spain".replace(re, "Canada");
- return r;
- </PRE>
- <BR>返回值:The rain in Canada
- <BR>
- <BR><SPAN style="FONT-SIZE: 18pt">search 方法</SPAN>
- <BR>返回與正則表達(dá)式查找內(nèi)容匹配的第一個(gè)子字符串的位置,。
- <BR>
- <BR>stringObj.search(rgExp)
- <BR>
- <BR>參數(shù)\\
- <BR>stringObj
- <BR>必選項(xiàng)。要在其上進(jìn)行查找的 String 對(duì)象或字符串文字。
- <BR>
- <BR>rgExp
- <BR>必選項(xiàng),。包含正則表達(dá)式模式和可用標(biāo)志的正則表達(dá)式對(duì)象,。
- <BR>
- <BR>說明
- <BR>
- <BR>search 方法指明是否存在相應(yīng)的匹配。如果找到一個(gè)匹配,,search 方法將返回一個(gè)整數(shù)值,,指明這個(gè)匹配距離字符串開始的偏移位置。如果沒有找到匹配,,則返回 -1,。
- <BR>
- <BR>示例\\
- <BR>下面的示例演示了 search 方法的用法。
- <BR><PRE class=java name="code">function SearchDemo()
- {
- var r, re;
- var s = "The rain in Spain falls mainly in the plain.";
- re = /falls/i;
- r = s.search(re);
- return(r);
- }
- </PRE>
- <BR>返回值:18
- <BR>
- <BR>
- <BR><SPAN style="FONT-SIZE: 18pt">正則表達(dá)式語法</SPAN>
- <BR>一個(gè)正則表達(dá)式就是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式,。該模式描述在查找文字主體時(shí)待匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式作為一個(gè)模板,,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配,。
- <BR>
- <BR>這里有一些可能會(huì)遇到的正則表達(dá)式示例:
- <BR><PRE class=java name="code">JScript VBScript 匹配
- /^\[ \t]*$/ "^\[ \t]*$" 匹配一個(gè)空白行。
- /\d{2}-\d{5}/ "\d{2}-\d{5}" 驗(yàn)證一個(gè)ID 號(hào)碼是否由一個(gè)2位數(shù)字,,一個(gè)連字符以及一個(gè)5位數(shù)字組成,。
- /<(.*)>.*<\/\1>/ "<(.*)>.*<\/\1>" 匹配一個(gè) HTML 標(biāo)記。
- </PRE>
- <BR>
- <BR>下表是元字符及其在正則表達(dá)式上下文中的行為的一個(gè)完整列表:
- <BR>
- <BR>字符 描述
- <BR>\ 將下一個(gè)字符標(biāo)記為一個(gè)特殊字符,、或一個(gè)原義字符,、或一個(gè) 后向引用、或一個(gè)八進(jìn)制轉(zhuǎn)義符,。例如,,'n' 匹配字符 "n"。'\n' 匹配一個(gè)換行符,。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "(",。
- <BR>
- <BR>^ 匹配輸入字符串的開始位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,,^ 也匹配 '\n' 或 '\r' 之后的位置,。
- <BR>
- <BR>$ 匹配輸入字符串的結(jié)束位置。如果設(shè)置了RegExp 對(duì)象的 Multiline 屬性,,$ 也匹配 '\n' 或 '\r' 之前的位置,。
- <BR>
- <BR>* 匹配前面的子表達(dá)式零次或多次。例如,,zo* 能匹配 "z" 以及 "zoo",。 * 等價(jià)于{0,},。
- <BR>
- <BR>+ 匹配前面的子表達(dá)式一次或多次。例如,,'zo+' 能匹配 "zo" 以及 "zoo",,但不能匹配 "z"。+ 等價(jià)于 {1,},。
- <BR>
- <BR>? 匹配前面的子表達(dá)式零次或一次。例如,,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" ,。? 等價(jià)于 {0,1}。
- <BR>
- <BR>{n} n 是一個(gè)非負(fù)整數(shù),。匹配確定的 n 次,。例如,'o{2}' 不能匹配 "Bob" 中的 'o',,但是能匹配 "food" 中的兩個(gè) o,。
- <BR>
- <BR>{n,} n 是一個(gè)非負(fù)整數(shù)。至少匹配n 次,。例如,,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o,。'o{1,}' 等價(jià)于 'o+',。'o{0,}' 則等價(jià)于 'o*'。
- <BR>
- <BR>{n,m} m 和 n 均為非負(fù)整數(shù),,其中n <= m,。最少匹配 n 次且最多匹配 m 次。劉,, "o{1,3}" 將匹配 "fooooood" 中的前三個(gè) o,。'o{0,1}' 等價(jià)于 'o?'。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格,。
- <BR>
- <BR>? 當(dāng)該字符緊跟在任何一個(gè)其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面時(shí),,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串,。例如,對(duì)于字符串 "oooo",,'o+?' 將匹配單個(gè) "o",,而 'o+' 將匹配所有 'o'。
- <BR>
- <BR>. 匹配除 "\n" 之外的任何單個(gè)字符,。要匹配包括 '\n' 在內(nèi)的任何字符,,請(qǐng)使用象 '[.\n]' 的模式,。
- <BR>(pattern) 匹配pattern 并獲取這一匹配。所獲取的匹配可以從產(chǎn)生的 Matches 集合得到,,在VBScript 中使用 SubMatches 集合,,在JScript 中則使用 $0…$9 屬性。要匹配圓括號(hào)字符,,請(qǐng)使用 '\(' 或 '\)',。
- <BR>
- <BR>(?:pattern) 匹配 pattern 但不獲取匹配結(jié)果,也就是說這是一個(gè)非獲取匹配,,不進(jìn)行存儲(chǔ)供以后使用,。這在使用 "或" 字符 (|) 來組合一個(gè)模式的各個(gè)部分是很有用。例如,, 'industr(?:y|ies) 就是一個(gè)比 'industry|industries' 更簡(jiǎn)略的表達(dá)式,。
- <BR>
- <BR>(?=pattern) 正向預(yù)查,在任何匹配 pattern 的字符串開始處匹配查找字符串,。這是一個(gè)非獲取匹配,,也就是說,該匹配不需要獲取供以后使用,。例如,, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows",。預(yù)查不消耗字符,,也就是說,在一個(gè)匹配發(fā)生后,,在最后一次匹配之后立即開始下一次匹配的搜索,,而不是從包含預(yù)查的字符之后開始。
- <BR>
- <BR>(?!pattern) 負(fù)向預(yù)查,,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串開始處匹配查找字符串,。這是一個(gè)非獲取匹配,也就是說,,該匹配不需要獲取供以后使用,。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows",。預(yù)查不消耗字符,,也就是說,在一個(gè)匹配發(fā)生后,,在最后一次匹配之后立即開始下一次匹配的搜索,,而不是從包含預(yù)查的字符之后開始
- <BR>
- <BR>x|y 匹配 x 或 y。例如,,'z|food' 能匹配 "z" 或 "food",。'(z|f)ood' 則匹配 "zood" 或 "food",。
- <BR>
- <BR>[xyz] 字符集合。匹配所包含的任意一個(gè)字符,。例如,, '[abc]' 可以匹配 "plain" 中的 'a'。
- <BR>
- <BR>[^xyz] 負(fù)值字符集合,。匹配未包含的任意字符,。例如, '[^abc]' 可以匹配 "plain" 中的'p',。
- <BR>
- <BR>[a-z] 字符范圍,。匹配指定范圍內(nèi)的任意字符。例如,,'[a-z]' 可以匹配 'a' 到 'z' 范圍內(nèi)的任意小寫字母字符。
- <BR>
- <BR>[^a-z] 負(fù)值字符范圍,。匹配任何不在指定范圍內(nèi)的任意字符,。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范圍內(nèi)的任意字符,。
- <BR>
- <BR>\b 匹配一個(gè)單詞邊界,,也就是指單詞和空格間的位置。例如,, 'er\b' 可以匹配"never" 中的 'er',,但不能匹配 "verb" 中的 'er'。
- <BR>
- <BR>\B 匹配非單詞邊界,。'er\B' 能匹配 "verb" 中的 'er',,但不能匹配 "never" 中的 'er'。
- <BR>
- <BR>\cx 匹配由x指明的控制字符,。例如,, \cM 匹配一個(gè) Control-M 或回車符。 x 的值必須為 A-Z 或 a-z 之一,。否則,,將 c 視為一個(gè)原義的 'c' 字符。
- <BR>
- <BR>\d 匹配一個(gè)數(shù)字字符,。等價(jià)于 [0-9],。
- <BR>
- <BR>\D 匹配一個(gè)非數(shù)字字符。等價(jià)于 [^0-9],。
- <BR>
- <BR>\f 匹配一個(gè)換頁符,。等價(jià)于 \x0c 和 \cL。
- <BR>
- <BR>\n 匹配一個(gè)換行符,。等價(jià)于 \x0a 和 \cJ,。
- <BR>
- <BR>\r 匹配一個(gè)回車符,。等價(jià)于 \x0d 和 \cM。
- <BR>
- <BR>\s 匹配任何空白字符,,包括空格,、制表符、換頁符等等,。等價(jià)于 [ \f\n\r\t\v],。
- <BR>
- <BR>\S 匹配任何非空白字符。等價(jià)于 [^ \f\n\r\t\v],。
- <BR>
- <BR>\t 匹配一個(gè)制表符,。等價(jià)于 \x09 和 \cI。
- <BR>
- <BR>\v 匹配一個(gè)垂直制表符,。等價(jià)于 \x0b 和 \cK,。
- <BR>
- <BR>\w 匹配包括下劃線的任何單詞字符。等價(jià)于'[A-Za-z0-9_]',。
- <BR>
- <BR>\W 匹配任何非單詞字符,。等價(jià)于 '[^A-Za-z0-9_]'。
- <BR>
- <BR>\xn 匹配 n,,其中 n 為十六進(jìn)制轉(zhuǎn)義值,。十六進(jìn)制轉(zhuǎn)義值必須為確定的兩個(gè)數(shù)字長。例如,, '\x41' 匹配 "A",。'\x041' 則等價(jià)于 '\x04' & "1"。正則表達(dá)式中可以使用 ASCII 編碼,。.
- <BR>
- <BR>\num 匹配 num,,其中 num 是一個(gè)正整數(shù)。對(duì)所獲取的匹配的引用,。例如,,'(.)\1' 匹配兩個(gè)連續(xù)的相同字符。
- <BR>
- <BR>\n 標(biāo)識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義值或一個(gè)后向引用,。如果 \n 之前至少 n 個(gè)獲取的子表達(dá)式,,則 n 為后向引用。否則,,如果 n 為八進(jìn)制數(shù)字 (0-7),,則 n 為一個(gè)八進(jìn)制轉(zhuǎn)義值。
- <BR>
- <BR>\nm 標(biāo)識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義值或一個(gè)后向引用,。如果 \nm 之前至少有is preceded by at least nm 個(gè)獲取得子表達(dá)式,,則 nm 為后向引用。如果 \nm 之前至少有 n 個(gè)獲取,,則 n 為一個(gè)后跟文字 m 的后向引用,。如果前面的條件都不滿足,,若 n 和 m 均為八進(jìn)制數(shù)字 (0-7),則 \nm 將匹配八進(jìn)制轉(zhuǎn)義值 nm,。
- <BR>
- <BR>\nml 如果 n 為八進(jìn)制數(shù)字 (0-3),,且 m 和 l 均為八進(jìn)制數(shù)字 (0-7),則匹配八進(jìn)制轉(zhuǎn)義值 nml,。
- <BR>
- <BR>\un 匹配 n,,其中 n 是一個(gè)用四個(gè)十六進(jìn)制數(shù)字表示的 Unicode 字符。例如,, \u00A9 匹配版權(quán)符號(hào) (?),。
- <BR>
- <BR>
- <BR><SPAN style="FONT-SIZE: 18pt">優(yōu)先權(quán)順序</SPAN>
- <BR>在構(gòu)造正則表達(dá)式之后,就可以象數(shù)學(xué)表達(dá)式一樣來求值,,也就是說,,可以從左至右并按照一個(gè)優(yōu)先權(quán)順序來求值。
- <BR>
- <BR>下表從最高優(yōu)先級(jí)到最低優(yōu)先級(jí)列出各種正則表達(dá)式操作符的優(yōu)先權(quán)順序:
- <BR><PRE class=java name="code">操作符 描述
- \ 轉(zhuǎn)義符
- (), (?:), (?=), [] 圓括號(hào)和方括號(hào)
- *, +, ?, {n}, {n,}, {n,m} 限定符
- ^, $, \anymetacharacter 位置和順序
- | “或”操作
- </PRE>
- <BR>
- <BR>普通字符
- <BR>
- <BR>普通字符由所有那些未顯式指定為元字符的打印和非打印字符組成,。這包括所有的大寫和小寫字母字符,,所有數(shù)字,所有標(biāo)點(diǎn)符號(hào)以及一些符號(hào),。
- <BR>
- <BR>最簡(jiǎn)單的正則表達(dá)式是一個(gè)單獨(dú)的普通字符,可以匹配所搜索字符串中的該字符本身,。例如,,單字符模式 'A' 可以匹配所搜索字符串中任何位置出現(xiàn)的字母 'A'。這里有一些單字符正則表達(dá)式模式的示例:
- <BR><PRE class=java name="code">/a/
- /7/
- /M/
- </PRE>
- <BR>等價(jià)的 VBScript 單字符正則表達(dá)式為:
- <BR><PRE class=java name="code">"a"
- "7"
- "M"
- </PRE>
- <BR>可以將多個(gè)單字符組合在一起得到一個(gè)較大的表達(dá)式,。例如,,下面的 JScript 正則表達(dá)式不是別的,就是通過組合單字符表達(dá)式 'a',、'7'以及 'M' 所創(chuàng)建出來的一個(gè)表達(dá)式,。
- <BR>
- <BR>/a7M/
- <BR>等價(jià)的 VBScript 表達(dá)式為:
- <BR>
- <BR>"a7M"
- <BR>請(qǐng)注意這里沒有連接操作符。所需要做的就是將一個(gè)字符放在了另一個(gè)字符后面,。
- <BR>
- <BR>
|