正則表達式是regular expression,看來英文比中文要好理解多了,就是檢查表達式符
不符合規定!!正則表達式有一個功能十分強大而又十分復雜的對象RegExp,在Javascript1.2 版本以
上提供。
下面我們看看有關正則表達式的介紹:
正則表達式對象用來規范一個規范的表達式(也就是表達式符不符合特定的要求,比如是不是Email
地址格式等),它具有用來檢查給出的字符串是否符合規則的屬性和方法。
除此之外,你用RegExp構造器建立的個別正則表達式對象的屬性,就已經預先定義好了正則表達式
對象的靜態屬性,你可以隨時使用它們。
核心對象:
在Javascript 1.2, NES 3.0以上版本提供。
在Javascript 1.3以后版本增加了toSource方法。
建立方法:
文字格式或RegExp構造器函數。
文字建立格式使用以下格式:
/pattern/flags即/模式/標記
構造器函數方法使用方法如下:
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+/
下面的提供了在正則表達式中能夠使用的完整對特殊字符的一個完整的列表和描述。
表1.3:正則表達式中的特殊字符:
字符
意義:對于字符,通常表示按字面意義,指出接著的字符為特殊字符,不作解釋。
例如:/b/匹配字符'b',通過在b 前面加一個反斜杠,也就是/b/,則該字符變成特殊字符,表示
匹配一個單詞的分界線。
或者:?
對于幾個字符,通常說明是特殊的,指出緊接著的字符不是特殊的,而應該按字面解釋。
例如:*是一個特殊字符,匹配任意個字符(包括0個字符);例如:/a*/意味匹配0個或多個a。
為了匹配字面上的*,在a前面加一個反斜杠;例如:/a*/匹配'a*'。
字符^
意義:表示匹配的字符必須在最前邊。
例如:/^A/不匹配"an A,"中的'A',但匹配"An A."中最前面的'A'。
字符$
意義:與^類似,匹配最末的字符。
例如:/t$/不匹配"eater"中的't',但匹配"eat"中的't'。
字符*
意義:匹配*前面的字符0次或n次。
例如:/bo*/匹配"A ghost booooed"中的'boooo'或"A bird warbled"中的'b',但不匹配"A goat g
runted"中的任何字符。
字符+
意義:匹配+號前面的字符1次或n次。等價于。
例如:/a+/匹配"candy"中的'a'和"caaaaaaandy."中的所有'a'。
字符?
意義:匹配?前面的字符0次或1次。
例如:/e?le?/匹配"angel"中的'el'和"angle."中的'le'。
字符.
意義:(小數點)匹配除換行符外的所有單個的字符。
例如:/.n/匹配"nay, an apple is on the tree"中的'an'和'on',但不匹配'nay'。
字符(x)
意義:匹配'x'并記錄匹配的值。
例如:/(foo)/匹配和記錄"foo bar."中的'foo'。匹配子串能被結果數組中的素[1], ..., [n] 返
回,或被RegExp對象的屬性$1, ..., $9返回。
字符x|y
意義:匹配'x'或者'y'。
例如:/green|red/匹配"green apple"中的'green'和"red apple."中的'red'。
字符
意義:這里的n是一個正整數。匹配前面的n個字符。
例如:/a/不匹配"candy,"中的'a',但匹配"caandy," 中的所有'a'和"caaandy."中前面的兩個
'a'。
字符
意義:這里的n是一個正整數。匹配至少n個前面的字符。
例如:/a不匹配"candy"中的'a',但匹配"caandy"中的所有'a'和"caaaaaaandy."中的所有'a'
字符
意義:這里的n和m都是正整數。匹配至少n個最多m個前面的字符。
例如:/a/不匹配"cndy"中的任何字符,但匹配 "candy,"中的'a',"caandy," 中的前面兩個
'a'和"caaaaaaandy"中前面的三個'a',注意:即使"caaaaaaandy" 中有很多個'a',但只匹配前面的三
個'a'即"aaa"。
字符[xyz]
意義:一字符列表,匹配列出中的任一字符。你可以通過連字符-指出一個字符范圍。
例如:[abcd]跟[a-c]一樣。它們匹配"brisket"中的'b'和"ache"中的'c'。
字符[^xyz]
意義:一字符補集,也就是說,它匹配除了列出的字符外的所有東西。 你可以使用連字符-指出一
字符范圍。
例如:[^abc]和[^a-c]等價,它們最早匹配"brisket"中的'r'和"chop."中的'h'。
字符[b]
意義:匹配一個空格(不要與b混淆)
字符b
意義:匹配一個單詞的分界線,比如一個空格(不要與[b]混淆)
例如:/bnw/匹配"noonday"中的'no',/wyb/匹配"possibly yesterday."中的'ly'。
字符B
意義:匹配一個單詞的非分界線
例如:/wBn/匹配"noonday"中的'on',/yBw/匹配"possibly yesterday."中的'ye'。
字符cX
意義:這里的X是一個控制字符。匹配一個字符串的控制字符。
例如:/cM/匹配一個字符串中的control-M。
字符d
意義:匹配一個數字,等價于[0-9]。
例如:/d/或/[0-9]/匹配"B2 is the suite number."中的'2'。
字符D
意義:匹配任何的非數字,等價于[^0-9]。
例如:/D/或/[^0-9]/匹配"B2 is the suite number."中的'B'。
字符f
意義:匹配一個表單符
字符n
意義:匹配一個換行符
字符r
意義:匹配一個回車符
字符s
意義:匹配一個單個white空格符,包括空格,tab,form feed,換行符,等價于[ fnrtv]。
例如:/sw*/匹配"foo bar."中的' bar'。
字符S
意義:匹配除white空格符以外的一個單個的字符,等價于[^ fnrtv]。
例如:/S/w*匹配"foo bar."中的'foo'。
字符t
意義:匹配一個制表符
字符v
意義:匹配一個頂頭制表符
字符w
意義:匹配所有的數字和字母以及下劃線,等價于[A-Za-z0-9_]。
例如:/w/匹配"apple,"中的'a',"$5.28,"中的'5'和"3D."中的'3'。
字符W?
意義:匹配除數字、字母外及下劃線外的其它字符,等價于[^A-Za-z0-9_]。
例如:/W/或者/[^$A-Za-z0-9_]/匹配"50%."中的'%'。
字符n
意義:這里的n是一個正整數。匹配一個正則表達式的最后一個子串的n的值(計數左圓括號)。
例如:/apple(,)sorange1/匹配"apple, orange, cherry, peach."中的'apple, orange',下面
有一個更加完整的例子。
注意:如果左圓括號中的數字比n指定的數字還小,則n取下一行的八進制escape作為描述。
字符ooctal和xhex
意義:這里的ooctal是一個八進制的escape值,而xhex是一個十六進制的escape值,允許在一個
正則表達式中嵌入ASCII碼。
當表達式被檢查的時候,文字符號提供了編輯正則表達式的方法。利用文字符號可以使到正則表達
式保持為常數。例如,如果你在一個循環中使用文字符號來構造一個正則表達式,正則表達式不需進行
反復編譯。
正則表達式對象構造器,例如,new RegExp("ab+c"),提供正則表達式的運行時編譯。當你知道正
則表達式的模式會變化的時候,應該使用構造函數,或者你不知道正則表達式的模式,而它們是從另外
的源獲得的時候,比如由用戶輸入時。一旦你定義好了正則表達式,該正則表達式可在任何地方使用,
并且可以改變,你可以使用編譯方法來編譯一個新的正則表達式以便重新使用。
一個分離預先定義的RegExp對象可以在每個窗口中使用;也就是說,每個分離的Javascript線程運
行以獲得自己的RegExp對象。因為每個腳本在一個線程中是不可中斷的,這就確保了不同的腳本不會覆
蓋RegExp對象的值。
預定義的RegExp對象包含的靜態屬性:input, multiline, lastMatch,lastParen, leftContext,?
rightContext, 以及從$1到$9。input和multiline屬性能被預設。其它靜態屬性的值是在執行個別正則
表達式對象的exec和test方法后,且在執行字符串的match和replace方法后設置的。
屬性
注意RegExp對象的幾個屬性既有長名字又有短名字(象Perl)。這些名字都是指向相同的值。Perl是
一種編程語言,而Javascript模仿了它的正則表達式。
屬性$1, ..., $9
取得匹配的子串,如果有的話
屬性$_
參考input
屬性$*
參考multiline
屬性$&
參考lastMatch
屬性$+
參考lastParen
屬性$`
參考leftContext
屬性$'
參考rightContext
屬性constructor
指定用來建立對象原型函
屬性global
決定是否測試正則表達式是否不能匹配所有的字符串,或者只是與最先的沖突。
屬性ignoreCase
決定試圖匹配字符串的時候是否忽略大小寫
屬性input
當正則表達式被匹配的時候,為相反的字符串。
屬性lastIndex
決定下一次匹配從那里開始
屬性lastMatch
最后一個匹配的字符
屬性lastParen
子串匹配的時候,最后一個parenthesized,如果有的話。
屬性leftContext
最近一次匹配前的子串。
屬性multiline
是否在串的多行中搜索。
屬性prototype
允許附加屬性到所有的對象
屬性rightContext
最近一次匹配后的的子串。
屬性source
模式文本
?
?
方法
compile方法
編譯一個正則表達式對象
exec方法
運行正則表達式匹配
test方法
測試正則達式匹配
toSource方法
返回一個對象的文字描述指定的對象;你可以使用這個值來建立一個新的對象。不考慮Object.toS
ource方法。
toString方法
返回一個字符串描述指定的對象,不考慮Object.toString對象。
valueOf方法
返回指定對角的原始值。不考慮Object.valueOf方法。
另外,這個對象繼承了對象的watch和unwatch方法
?
例子:
例1、下述示例腳本使用replace方法來轉換串中的單詞。在替換的文本中,腳本使用全局 RegExp
對象的$1和$2屬性的值。注意,在作為第二個參數傳遞給replace方法的時候,RegExp對象的$屬性的名
稱。
<script LANGUAGE="Javascript1.2">
re = /(w+)s(w+)/;
str = "John Smith";
newstr=str.replace(re,"$2, $1");
document.write(newstr)
</script>
顯示結果:"Smith, John".?
例2、下述示例腳本中,RegExp.input由Change事件處理句柄設置。在getInfo函數中,exec 方法
使用RegExp.input的值作為它的參數,注意RegExp預置了$屬性。
<script LANGUAGE="Javascript1.2">
function getInfo(abc)
{
re = /(w+)s(d+)/;
re.exec(abc.value);
window.alert(RegExp.$1 + ", your age is " + RegExp.$2);
}
</script>
請輸入你的姓和年齡,輸入完后按回車鍵。
<FORM><INPUT TYPE="TEXT" NAME="NameAge" onChange="getInfo(this);"></FORM>
</HTML>
$1, ..., $9屬性
用圓括號括著的匹配子串,如果有的話。
是RegExp的屬性
靜態,只讀
在Javascript 1.2, NES 3.0以上版本提供
描述:因為input是靜態屬性,不是個別正則表達式對象的屬性。你可以使用RegExp.input 訪問該
屬性。
能加上圓括號的子串的數量不受限制,但正則表達式對象只能保留最后9 條。如果你要訪問所有的
圓括號內的匹配字串,你可以使用返回的數組。
這些屬性能用在RegExp.replace方法替換后的字符串(輸出結果)。當使用這種方式的時候,不用預
先考慮RegExp對象。下面給出例子。當正則表達式中沒有包含圓括號的時候,該腳本解釋成$n的字面意
義。(這里的n是一個正整數)。
例如:
下例腳本使用replace 方法來交換串中單詞的位置。在替換后的文本字串中,腳本使用正則表達式
RegExp對象的$1和$2屬性的值。注意:當它們向replace方法傳遞參數的時候,這里沒有考慮 $ 屬性的
RegExp對象的名稱。
<script LANGUAGE="Javascript1.2">
re = /(w+)s(w+)/;
str = "John Smith";
newstr=str.replace(re,"$2, $1");
document.write(newstr)
</script>
顯示的輸出結果為:Smith, John。?
?
正則表達式詳述(二)?
以下這些不是正則表達式的新增對象請參閱對應的Javascript對象的屬性 $_屬性 參考input $*屬性
參考multiline $&屬性 參考lastMatch $+屬性 參考lastParen $`屬性
參考leftContext $'屬性 參考rightContext compile方法 在腳本運行期間編譯正則表達式對象
屬于RegExp的方法 在Javascript 1.2, NES 3.0以上版本提供 語法:
regexp.compile(pattern[, flags]) 以數: regexp 正則表達式的名稱,可以是變量名或文字串。?
pattern 正則表達式的定義文本。 flags 如果指定的話,可以是下面其中的一個: "g": 匹配所有可能的字串
"i": 忽略大小寫 "gi": 匹配所有可能的字串及忽略大小寫 描述:
使用compile方法來編譯一個正則表達式 created with the RegExp constructor function。這樣
就強制正則表達式只編譯一次,而不是每次遇到正則表達式的時候都編譯一次。當你確認正則表達式能
保持不變的時候可使用compile 方法來編譯它(在獲得它的匹配模式后),這樣就可以在腳本中重復多次使用它。
你亦可以使用compile 方法來改變在運行期間改變正則表達式。例如,假如正則表達式發生變化,
你可以使用compile方法來重新編譯該對象來提高使用效率。
使用該方法將改變正則表達式的source, global和ignoreCasesource屬性的值。 constructor?
指出建立對象原型的function。注意這個屬性的值由函數本身提供,而不是一個字串包含RegExp的name.Property提供。?
在Javascript 1.1, NES 2.0以上版本提供 ECMA版本ECMA-262 描述:參考Object.constructor.
exec方法 在指定的字符串運行匹配搜索。返回一個結果數組。 是RegExp的方法?
在Javascript 1.2, NES 3.0以上版本提供 語法: regexp.exec([str])regexp([str])
參數: regexp,正則表達式的名稱,可以是一個變量名或文字定義串。?
str,要匹配正則表達式的字符串,如果省略,將使用RegExp.input的值。?
描述:就如在語法描述中的一樣,正則表達工的exec方法能夠被直接調用(使用regexp.exec(str))或者間接調用(使用regexp(str))。
假如你只是運行以找出是否匹配,可以使用String搜索方法。
假如匹配成功,exec方法返回一個數組并且更新正則表達式對象屬性的值和預先定義的正則表達式對象、RegExp。如果匹配失敗,exec方法返回null。
請看下例: <script LANGUAGE="Javascript1.2"> //匹配一個b接著一個或多個d,再接著一個b
//忽略大小寫 myRe=/d(b+)(d)/ig; myArray = myRe.exec("cdbBdbsbz");
</script> 下面是該腳本的返回值:對象 屬性/Index 描述 例子?
myArray
myArray的內容 ["dbBd", "bB", "d"]?
index
基于0的匹配index 1?
input
原始字符串 cdbBdbsbz?
[0]
最后匹配的字符 dbBd?
[1], ...[n]
用圓括號括住的匹配字符串,如果有的話。不限制括號的個數。 [1] = bB
[2] = d?
myRe
lastIndex
開始下次匹配操作的index值 5?
ignoreCase
指出"i"是否使用以忽略大小寫 true?
global
指出是否使用"g"標記來進行匹配所有可能的字串 true?
source
定義模式的文本字符串 d(b+)(d)?
RegExp
lastMatch$&
最后匹配的字符 dbBd?
leftContext$Q
最新匹配前面的子串 c?
rightContext$'
最新匹配后面的子串 bsbz?
$1, ...$9
圓括號內的匹配子串,如果有的話。圓括號的個數不受限制,但RegExp只能保留最后9個 $1 = bB?
$2 = d?
lastParen $+
最后一個加上圓括號的匹配子串,如果有的話 d?
假如你的正則表達式使用了"g"標記,你可以多次使用exec 方法來連續匹配相同的串。當你這樣做
的時候,新的匹配將從由正則表達式的lastIndex 屬性值確定的子串中開始。例如,假定你使用下面的腳本:
<script LANGUAGE="Javascript1.2"> myRe=/ab*/g;str = "abbcdefabh"
myArray = myRe.exec(str);
document.writeln("Found "+myArray[0]+". Next match starts at "+myRe.lastIndex)
mySecondArray = myRe.exec(str);
document.writeln("Found "+mySecondArray[0]+". Next match starts at "+myRe.lastIndex)
</script> 這個腳本顯示如下結果: Found abb. Next match starts at 3
Found ab. Next match starts at 9 例子:
在下面的例子中,用戶輸入一個名字,腳本根據輸入執行匹配操作。接著檢查數組看是否和其它用戶的名字匹配。
本腳本假定已注冊的用戶的姓已經存進了數組A中,或許從一個數據庫中取得。 <HTML>
<script LANGUAGE="Javascript1.2"> A = ["zhao","qian","sun","li","liang"]
function lookup() { firstName = /w+/i(); if (!firstName)
window.alert (RegExp.input + "非法輸入"); else { count=0;
for (i=0;i 輸入你的姓然后按回車鍵。
<FORM><INPUT TYPE:"TEXT" NAME="FirstName" onChange="lookup(this);"></FORM>
</HTML> global屬性 正則表達式中是否使用了"g"標記。 RegExp屬性,只讀
在Javascript 1.2, NES 3.0以上版本提供 描述: global是一個個別正則表達式對象的屬性
如果使用了"g"標記,global的值為true;否則為 false。"g"標記指定正則表達式測試所有可能的匹配。
你不能直接改變該屬性的值,但可以調用compile方法來改變它。 ignoreCase 檢查正則表達式是否使用了"i"標記
RegExp屬性,只讀 在Javascript 1.2, NES 3.0以上版本提供 描述:
ignoreCase是個別正則表達式對象的一個屬性。
如果使用了"i"標記,則返回true,否則返回false。"i"標記指示在進行匹配的時候忽略大小寫。
你不能直接改變該屬性的值,但可以通過調用compile方法來改變它 input 指出正則表達式要測試那個字串。$_是這個屬性的另一個名字。
RegExp的屬性,靜態 在Javascript 1.2, NES 3.0以上版本提供?
描述:因為input是靜態的,不是某個個別的正則表達式對象的屬性。你也可以使用 RegExp.input來表示。
如果沒有給正則表達式的exec或test方法提供字符串,并且RegExp.input中有值,則使用它的值來調用該方法。
腳本或瀏覽器能夠預置input屬性。如果被預置了值且調用exec或 test方法的時候沒有提供字符串
則調用exec或test的時候使用input的值。input可以被瀏覽器以下面的方式設置:
當text表單域處理句柄被調用的時候,input被設置為該text輸入的字串。
當textarea表單域處理句柄被調用的時候,input被設置為textarea域內輸入的字串。注意multili
ne亦被設置成true從而能匹配多行文本。 當select表單域處理句柄被調用的時候,input被設置成selected text的值。
當鏈接對象的處理句柄被調用的時候,input被設置成<A HREF=...>和</A>之間的字符串。
事件理現句柄處理完畢后,input屬性的值被清除。 lastIndex 可讀/可寫的一個整數屬性,指出下一次匹配從哪里開始。
RegExp的屬性 在Javascript 1.2, NES 3.0以上版本提供?
描述:lastIndex 是個別的正則表達式對象的屬性。 這個屬性只有當正則表達式的"g"標記被使用以進行全串匹配的時候才被設置。實行以下規則:
如果lastIndex大小字符串的長度,regexp.test和regexp.exec失敗,且lastIndex被設為0。
如果lastIndex等于字串的長度且正則表達式匹配空字符串,則正則表達式從lastIndex的位置開始匹配。
如果lastIndex等于字符串的長度且正則表達式不匹配空字符串,則正則表達式不匹配input,且lastIndex被置為0。
否則,lastIndex被設置成最近一次匹配的下一點。 例如,按下面的順序執行腳本: re = /(hi)?/g 匹配空字符串?
re("hi") 返回["hi", "hi"],lastIndex置為2?
re("hi") 返回[""],一個空數組,它的下標為0的元素就是匹配字符串。在這種情況下,返回空
串是因為lastIndex等于2(且仍然是2),并且"hi"的長度也是2。 lastMatch 最后一次匹配字符串,$&是同樣的意思。
RegExp的屬性,靜態,只讀 在Javascript 1.2, NES 3.0以上版本提供?
描述:因為lastMatch是靜態的,所以它不是個別指定正則表達式的屬性。你也可以使用RegExp.lastMatch。 lastParen
最后一次加上括號的匹配字符串,如果有的話。$+是同樣的意思。 RegExp屬性,靜態,只讀
在Javascript 1.2, NES 3.0以上版本提供?
描述:因為lastParen是靜態的,它不是某個個別正則式的屬性,你可以使用RegExp.lastParen 表達同樣的意思。
leftContext 最近一次匹配前面的子串,$`具有相同的意思。 RegExp的屬性,靜態,只讀
在Javascript 1.2, NES 3.0以上版本提供?
描述:因為leftContext是靜態的,不是某一個正則表達式的屬性,所以可以使用RegExp.leftContext來表達想同的意思。
multiline 反映是否匹配多行文本,$*是相同的意思。 RegExp的屬性,靜態
在Javascript 1.2, NES 3.0以上版本提供?
描述:因為multiline是靜態的,而不是某個個別正則表達式的屬性,所以能夠用RegExp.multiline表達相同的意思。
如果允許匹配多行文本,則multiline為true,如果搜索必須在換行時停止,則為false。
腳本或瀏覽器能夠設置multiline屬性。當一個textarea的事件處理句柄被調用的時候,multiline
被置為true。在事件處理句柄處理完畢后,multiline屬性值被清除。也就是說,如果你設置了multili
ne為true,則執行任何的事件處理句柄后,multiline被置為false。 prototype?
描繪類的原型。你可以根據要求使用prototype來增加類的屬性或方法。為了獲得prototypes 的資
料,請參閱RegExp的function.prototype.Property屬性。 從Javascript 1.1, NES 2.0版本開始提供
ECMA版本ECMA-262 rightContext 最后一次匹配的右邊的字符串,$'是同樣的效果。
RegExp的屬性,靜態,只讀 從 Javascript 1.2, NES 3.0以上版本開始提供?
描述:因為rightContext是靜態的,不是某個個別正則表達工的屬性,可以使用RegExp.rightContext來達到相同的效果。
source 一個只讀屬性,包含正則表達式定義的模式,不包僑forward slashes和"g"或"i"標記。 RegExp的屬性,只讀
從Javascript 1.2, NES 3.0以上版本開始提供?
描述:source是個別正則表達式對象的屬性,你不能直接改變它的值,但可以通過調用compile 方法來改變它。 test
執行指定字符串的正則表達式匹配搜索,返回true或false。 RegExp的方法
從Javascript 1.2, NES 3.0以上版本開始提供 語法:regexp.test([str])
參數:regexp,正則表達式的名稱,可以是變量名或正則表達式定義文字串
str,要匹配的字符串,如果省略,將使用RegExp.input的值為作參數
描述:當你需要知道一個字符串能否匹配某個正則表達工,可以使用test方法(與String.search方
法類似); 為了獲得更多的信息(但速度將變慢),可以使用exec方法(與String.match方法類似)。 例子:下面的例子顯示test是否成功的提示:
function testinput(re, str){
if (re.test(str)) midstring = " contains ";
else midstring = " does not contain ";
document.write (str + midstring + re.source); } toSource?
返回一個字符串象征對象的源碼 RegExp的方法 從Javascript 1.3以上版本開始提供 語法:toSource()
參數:沒有 描述:toSource方法返回下述的值: 對于內置的RegExp對象,toSource返回下面的字符象征源碼不可用:
function Boolean(){ [native code] }
在RegExp場合中, toSource返回象征源碼的字符串,通常這個方法是由Javascript內部自動調用而不是不代碼中顯式調用。
更多請看Object.toSource toString 返回描繪指定對象的字符串。 RegExp的方法
從Javascript 1.1, NES 2.0開始提供 ECMA版本ECMA-262 語法:toString() 參數:無
描述:RegExp對象不考慮Object對象的toString方法;它不繼承Object.toString,對于RegExp 對
象,toString方法返回一個代表該對象的字符串。 例如:下面的例子顯示象征RegExp對象的字符串
myExp = new RegExp("a+b+c"); alert(myExp.toString())
displays "/a+b+c/" 更多請看:Object.toString valueOf 返回一個RegExp對象的原始值
RegExp的方法 從Javascript 1.1版本開始提供 ECMA版本:ECMA-262 語法:valueOf()
參數:無 描述:RegExp的valueOf方法以字符串形式返回RegExp對象的原始值,這個值與RegExp.toString相等。
該方法通常由Javascript內部自動調用而不是顯式調用 例子: myExp = new RegExp("a+b+c");
alert(myExp.valueOf()) displays "/a+b+c/"