用瀏覽器裡的 JavaScript 正則做測試,標出符合的部分、列出擷取群組,也可以試取代。
這是 ECMAScript 的寫法,前端校驗和很多 JSON Schema 用的就是它,不是 PHP 的 PCRE。從 preg_match 文檔抄來的式子,如果用了只有 PCRE 才有的寫法,在這裡會失敗。當前瀏覽器支援後行斷言。
全局匹配一直開著,所以你會看到全部命中,而不只是第一處。替換使用 JavaScript 的規則:$1、$2,兩個 $$ 表示一個美元符號。
表達式已經確認可用、只想把匹配摳出來時,用更短的 正則提取。
\d+ 就夠了,不要寫成 /\d+/g。標誌用複選框。^ 和 $ 對每一行生效。s 讓點號匹配換行。u 打開 Unicode,寫 \p{L} 或處理表情時需要它。$1 是第一組。結果是整段文字替換之後的樣子,不是隻列出命中的碎片。. 預設不匹配換行,除非打開 s。\d 數字,\w 單詞字元,\s 空白。大寫是相反集合。+ 一次或多次,* 零次或多次,? 可有可無。再加一個 ? 變成非貪婪,例如 +?。(...) 會捕獲。(?:...) 只分組、不捕獲。頁面上的編號從 1 開始,和 $1 一致。\w 只是 [A-Za-z0-9_],不包含漢字和帶音標的字母。先看方言。很多編輯器用 PCRE,\w 會包含重音字母。這裡預設不包含。
像 (a+)+ 這種嵌套量詞,遇到很長又匹配失敗的文本會非常慢。頁面在 5000 處命中後停止列舉,但沒法把這種表達式變快。把範圍寫窄一些。