快速入門
教學
工具和語言
範例
參考
書籍評論
正規表示式工具
grep
PowerGREP
RegexBuddy
RegexMagic
一般應用程式
EditPad Lite
EditPad Pro
語言和函式庫
Boost
Delphi
GNU (Linux)
Groovy
Java
JavaScript
.NET
PCRE (C/C++)
PCRE2 (C/C++)
Perl
PHP
POSIX
PowerShell
Python
R
Ruby
std::regex
Tcl
VBScript
Visual Basic 6
wxWidgets
XML Schema
Xojo
XQuery 和 XPath
XRegExp
資料庫
MySQL
Oracle
PostgreSQL
本網站更多內容
簡介
正規表示式快速入門
正規表示式教學
替換字串教學
應用程式和語言
正規表示式範例
正規表示式參考
替換字串參考
書籍評論
可列印 PDF
關於本網站
RSS Feed 和部落格
RegexBuddy—The best regex editor and tester for XRegExp developers!

XRegExp JavaScript 正則表達式函式庫

XRegExp 是由 Steven Levithan 開發的開源 JavaScript 函式庫。它支援所有現代瀏覽器,以及許多較舊甚至古老的瀏覽器版本。它也可以在伺服器上使用 Node.js。您可以在 xregexp.com 下載 XRegExp。

使用 XRegExp 物件取代 JavaScript 內建的 RegExp 物件,可以提供具備更多功能且跨瀏覽器差異較少的正規表示式語法。新增的顯著功能包括 自由間距命名擷取模式修改器Unicode 類別、區塊和指令碼。它也會將無效的跳脫字元和不存在的反向參照視為錯誤。

XRegExp 也提供自己的 replace() 方法,其替換文字語法已使用 命名反向參照 增強,且沒有跨瀏覽器差異。它也提供完全符合 JavaScript 標準的 split() 方法。

要使用 XRegExp,首先使用 var myre = XRegExp('regex', 'flags') 建立一個正規表示式物件,其中 flags 是字母 g(全域)、i(不分大小寫)、m錨點 在換行符號處比對)、s 比對換行符號)、x自由間距)和 n(明確擷取)的組合。XRegExp 3 新增 A(星體)旗標,在比對 Unicode 屬性和區塊時,會包含 U+FFFF 之外的 Unicode 字元。ECMAScript 6 旗標 y(黏著)和 u(Unicode)也可以用在原生支援這些旗標的現代瀏覽器中,但如果瀏覽器沒有內建支援這些旗標,就會擲回錯誤。

然後你可以將建立的 XRegExp 執行個體傳遞給各種 XRegExp 方法。請務必按照以下所示進行呼叫,才能獲得完整的 XRegExp 功能。XRegExp 建構函式傳回的物件是原生 JavaScript RegExp 物件。該物件的方法是瀏覽器內建的 RegExp 方法。你可以透過呼叫 XRegExp.install('natives') 來使用 XRegExp 的方法取代內建的 RegExp 方法。這麼做也會影響由一般 RegExp 建構函式或雙斜線正規表示式字面值建立的 RegExp 物件。

XRegExp.test(str, regex, [pos=0], [sticky=false]) 測試 regex 是否可以比對字串的一部分。pos 引數是字串中比對嘗試應開始的從 0 開始的索引。如果你傳遞 true'sticky'sticky 參數,則只會在 pos 嘗試比對。這類似於在其他風格中將 開始嘗試錨點 \G(XRegExp 不支援)新增到 regex 的開頭。

XRegExp.exec(str, regex, [pos=0], [sticky=false]) 的功能與 XRegExp.test() 相同,但會傳回 null 或陣列,而不是 falsetrue。陣列中的索引 0 儲存整體 regex 比對。索引 1 和之後的索引儲存由擷取群組比對的文字(如果有)。如果 regex 有命名擷取群組,則其比對會在 XRegExp 4 及之前版本中作為陣列上的屬性提供。在 XRegExp 5 中,陣列有一個 group 屬性,該屬性會將擷取群組的名稱作為屬性。XRegExp.exec() 不依賴 lastIndex 屬性,因此可以避免與該屬性相關的跨瀏覽器問題。

XRegExp.forEach(str, regex, callback) 可以輕鬆地反覆執行字串中 regex 的所有比對。它會反覆執行所有比對,而不論 global 旗標和 lastIndex 屬性。會使用四個引數呼叫 callback。前兩個是類似 exec() 傳回的陣列,以及比對在字串中開始的索引。最後兩個是 strregex,與你傳遞給 forEach() 的內容完全相同。

XRegExp.replace(str, regex, replacement, [scope]) 傳回一個字串,其中 strregex 的比對已用 replacement 取代。傳遞 'one''all' 作為 scope 引數,以只取代第一個比對或所有比對。如果你省略 scope 引數,則 regex.global 旗標會決定是否只取代第一個或所有比對。

XRegExp.replace()」方法使用自己的替換文字語法。它與原生 JavaScript 語法非常相似。它在某種程度上不兼容,會將無法形成有效替換代碼的美元符號視為錯誤。但好處是它消除了所有瀏覽器間的不一致性。 $$ 會插入一個單一的文字美元符號。 $&$0 會插入 整體正規表示式比對$`$' 會插入正規表示式比對左右兩側的 主旨字串部分$n$nn${n}${nn}編號反向參照,而 ${name}命名反向參照

如果你傳遞一個函式作為 replacement 參數,則會以三個或更多參數呼叫它。第一個參數是已比對的字串,其中命名的擷取群組可透過該字串上的屬性取得。第二個和後續參數是正規表示式中每個擷取群組比對到的字串(如果有的話)。最後兩個參數是找到比對的字串索引和原始主旨字串。

XRegExp.split(str, regex, [limit])String.prototype.split 的替代方案。它精確遵循 JavaScript 的字串分割標準,消除了所有瀏覽器間的不一致性和錯誤。

| 快速入門 | 教學 | 工具和語言 | 範例 | 參考 | 書籍評論 |

| grep | PowerGREP | RegexBuddy | RegexMagic |

| EditPad Lite | EditPad Pro |

| Boost | Delphi | GNU (Linux) | Groovy | Java | JavaScript | .NET | PCRE (C/C++) | PCRE2 (C/C++) | Perl | PHP | POSIX | PowerShell | Python | R | Ruby | std::regex | Tcl | VBScript | Visual Basic 6 | wxWidgets | XML Schema | Xojo | XQuery 和 XPath | XRegExp |

| MySQL | Oracle | PostgreSQL |