正則表達式是
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>
請輸入你的姓和年齡,輸入完后按回車鍵。
<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/"