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