正規表示式工具 |
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 和部落格 |
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 或陣列,而不是 false 或 true。陣列中的索引 0 儲存整體 regex 比對。索引 1 和之後的索引儲存由擷取群組比對的文字(如果有)。如果 regex 有命名擷取群組,則其比對會在 XRegExp 4 及之前版本中作為陣列上的屬性提供。在 XRegExp 5 中,陣列有一個 group 屬性,該屬性會將擷取群組的名稱作為屬性。XRegExp.exec() 不依賴 lastIndex 屬性,因此可以避免與該屬性相關的跨瀏覽器問題。
XRegExp.forEach(str, regex, callback) 可以輕鬆地反覆執行字串中 regex 的所有比對。它會反覆執行所有比對,而不論 global 旗標和 lastIndex 屬性。會使用四個引數呼叫 callback。前兩個是類似 exec() 傳回的陣列,以及比對在字串中開始的索引。最後兩個是 str 和 regex,與你傳遞給 forEach() 的內容完全相同。
XRegExp.replace(str, regex, replacement, [scope]) 傳回一個字串,其中 str 中 regex 的比對已用 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 |
頁面網址:https://regular-expressions.dev.org.tw/xregexp.html
頁面最後更新時間:2021 年 11 月 5 日
網站最後更新時間:2024 年 3 月 15 日
版權所有 © 2003-2024 Jan Goyvaerts。保留所有權利。