正規表示式regular expression詳述

duduwolf發表於2004-08-21

正規表示式是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次。等價於{1,}。
例如:/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是一個正整數。匹配前面的n個字元。
例如:/a{2}/不匹配"candy,"中的'a',但匹配"caandy," 中的所有'a'和"caaandy."中前面的兩個
'a'。

字元{n,}
意義:這裡的n是一個正整數。匹配至少n個前面的字元。
例如:/a{2,}不匹配"candy"中的'a',但匹配"caandy"中的所有'a'和"caaaaaaandy."中的所有'a'

字元{n,m}
意義:這裡的n和m都是正整數。匹配至少n個最多m個前面的字元。
例如:/a{1,3}/不匹配"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]混淆)
例如://bn/w/匹配"noonday"中的'no',//wy/b/匹配"possibly yesterday."中的'ly'。

字元/B
意義:匹配一個單詞的非分界線
例如://w/Bn/匹配"noonday"中的'on',/y/B/w/匹配"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,換行符,等價於[ /f/n/r/t/v]。
例如://s/w*/匹配"foo bar."中的' bar'。

字元/S
意義:匹配除white空格符以外的一個單個的字元,等價於[^ /f/n/r/t/v]。
例如://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(,)/sorange/1/匹配"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>

  請輸入你的姓和年齡,輸入完後按Enter鍵。
  <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 輸入你的姓然後按Enter鍵。
<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/"

相關文章