W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
正則表達(dá)式字面量是輸入元素,每當(dāng)字面量被評估時會轉(zhuǎn)換為 RegExp 對象(見 15.10)。當(dāng)一個程序中有兩個正則表達(dá)式字面量評估成正則表達(dá)式對象,不能用 === 比較他們是否相等,即使兩個字面量包含相同內(nèi)容。RegExp 對象也可以在運(yùn)行時使用 new RegExp(見 15.10.4)或以函數(shù)方式調(diào)用 RegExp 構(gòu)造器來創(chuàng)建(見 15.10.3)。
下面的產(chǎn)生式描述了正則表達(dá)式字面量的語法,輸入元素掃描器還用它搜索正則表達(dá)式字面量的結(jié)束位置。RegularExpressionBody 和 RegularExpressionFlags 包含的字符組成的字符串會直接傳遞給正則表達(dá)式構(gòu)造器,在那里用更嚴(yán)格文法進(jìn)行解析。一個實(shí)現(xiàn)可以擴(kuò)展正則表達(dá)式構(gòu)造器的文法。但它不能擴(kuò)展 RegularExpressionBody 和 RegularExpressionFlags 產(chǎn)生式或使用這些產(chǎn)生式的產(chǎn)生式。
語法
RegularExpressionLiteral ::
/ RegularExpressionBody / RegularExpressionFlags
RegularExpressionBody ::
RegularExpressionFirstChar RegularExpressionChars
RegularExpressionChars ::
[empty] RegularExpressionChars RegularExpressionChar
RegularExpressionFirstChar ::
RegularExpressionNonTerminator but not *or \or / or [
RegularExpressionBackslashSequence
RegularExpressionClass
RegularExpressionChar ::
RegularExpressionNonTerminator but not \or / or [
RegularExpressionBackslashSequence
RegularExpressionClass
RegularExpressionBackslashSequence ::
\RegularExpressionNonTerminator
RegularExpressionNonTerminator ::
SourceCharacter but not LineTerminator
RegularExpressionClass ::
[ RegularExpressionClassChars ]
RegularExpressionClassChars ::
[empty]
RegularExpressionClassChars RegularExpressionClassChar
RegularExpressionClassChar ::
RegularExpressionNonTerminator but not ]or \
RegularExpressionBackslashSequence
RegularExpressionFlags ::
[empty]
RegularExpressionFlags IdentifierPart
注:正則表達(dá)式字面量不能為空;并不是說正則表達(dá)式字面量不能代表空,字符 // 會啟動一個單行注釋。要指定一個空正則,使用:/(?:)/。
語義
正則表達(dá)式字面量會評估為一個 Object 類型值,它是標(biāo)準(zhǔn)內(nèi)置構(gòu)造器 RegExp 的一個實(shí)例。此值取決于兩個步驟:首先,展開組成正則表達(dá)式產(chǎn)生式 RegularExpressionBody 和RegularExpressionFlags 的字符,將其以未解析形式分別存成兩個字符串 Pattern 和 Flags。然后,在每次評估字面量時創(chuàng)建新對象,仿佛使用 new RegExp(Pattern, Flags) 一樣,這里的 RegExp 是標(biāo)準(zhǔn)內(nèi)置構(gòu)造器名。新構(gòu)造的對象將成為 RegularExpressionLiteral 的值。如果調(diào)用 new RegExp 會產(chǎn)生 15.10.4.1 指定的錯誤,那么必須把錯誤當(dāng)作是早期錯誤 ( 見 第 16 章 )。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: