規則運算式

進行基本的字串尋找與擷取時,使用如 indexOf() substr() substring() 等 String 類別方法,來取代規則運算式。

可使用規則運算式執行的一些作業也可以使用 String 類別的方法來完成。例如,您可以使用 String.indexOf() 方法或使用規則運算式,來確認字串中是否包含另一個字串。不過,當 String 類別方法可供使用時,此方法的執行速度比相同的規則運算式來得快,而且不需要建立另一個物件。

若要將元素分組,但不分離結果中的群組內容時,請使用非擷取群組 (“ (?:xxxx) ”),而不要使用規則運算式中的群組 (“ (xxxx) ”)。

在中等複雜的規則運算式中,可以將運算式的某些部分組合在一起。例如,在下列規則運算式樣式中,圓括弧會在文字 “ab” 周圍建立群組。因此,“+” 數量詞會套用到群組,而不是單一字元:

/(ab)+/

根據預設,每個群組的內容都是「擷取而來」。您可以在執行規則運算式時,以自己的樣式取得每個群組的內容。擷取這些群組結果會花費較長的時間,而且需要較多的記憶體,因為必須建立物件來包含群組結果。或者,您也可以在左括弧後面加上問號與冒號來使用非擷取群組語法。此語法指出字元的行為就如同群組,但不會擷取做為結果:

/(?:ab)+/

使用非擷取群組語法的速度較快,而且使用的記憶體比使用標準群組語法少。

如果規則運算式的執行效能不佳,請考慮使用替代的規則運算式樣式。

您有時可以使用多個規則運算式樣式,來測試或識別相同的文字模式。基於不同的原因,部分樣式的執行速度會快於其他替代方法。如果您判斷出某個規則運算式造成程式碼的執行速度變慢,請考慮可達成相同結果的替代規則運算式樣式。測試這些替代樣式以判斷哪一種的執行速度最快。