--- title: 正規表達式的運用 slug: conflicting/Web/JavaScript/Guide/Regular_Expressions translation_of: Web/JavaScript/Guide/Regular_Expressions translation_of_original: Web/JavaScript/Guide/Obsolete_Pages/Working_with_Regular_Expressions original_slug: Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/正規表達式的運用 ---
RegExp 的 test 和 exec 方法,還有 String 的 match、replace、search、split 方法都有使用到正規表達式。這些方法在 Core JavaScript 參考 中已有詳細說明。
| 方法 | 說明 |
|---|---|
| exec | RegExp 的方法,在字串中比對以執行搜尋。他會返回搜尋資訊的陣列。 |
| test | RegExp 的方法,在字串中比對以進行測試。他會返回 true 或 false。 |
| match | String 的方法,在字串中比對以執行搜尋。他會返回搜尋資訊的陣列,或在比對不出時返回 null。 |
| search | String 的方法,在字串中比對以進行測試。他會返回符合比對的索引,或在搜尋失敗時返回 -1。 |
| replace | String 的方法,在字串中比對以執行搜尋,並以其他子字串取代符合比對的子字串。 |
| split | String 的方法,使用正規表達式或固定的字串,把字串分割為子字串的陣列。 |
表 4.2: 使用了正規表達式的方法
當你想知道是否可以在字串裡找出某個模式,可以使用 test 或 search 方法。要更詳細的資訊(不過執行速度也慢)可以使用 exec 或 match 方法。如果你使用 exec 或 match 並且比對成功,這些方法會返回陣列,並更新相關聯的正規表達式物件包括預先定義的 RegExp 的屬性,如果比對失敗,exec 方法返回 null(可轉換為 false)。
在以下的範例中,Script 使用了 exec 方法來在字串裡尋找符合的字串。
<SCRIPT type="text/javascript">
myRe = /d(b+)d/g;
myArray = myRe.exec("cdbbdbsbz");
</SCRIPT>
如果你不需要存取正規表達式的屬性,另一個建立 myArray 的方式如下 Script︰
<SCRIPT type="text/javascript">
myArray = /d(b+)d/g.exec("cdbbdbsbz");
</SCRIPT>
如果你想要從字串來建構正規表達式,還有其他選擇如下 Script︰
<SCRIPT type="text/javascript">
myRe = new RegExp ("d(b+)d", "g");
myArray = myRe.exec("cdbbdbsbz");
</SCRIPT>
這些 Script 比對成功並返回陣列,並更新顯示在下表中的屬性。
| 物件 | 屬性或索引 | 說明 | 上面的範例 |
|---|---|---|---|
| myArray | 比對符合的字串和所有已記憶的子字串。 | {{ mediawiki.external('\"dbbd\", \"bb\"') }} | |
| index | 在輸入的字串中比對符合的索引位置。索引從 0 開始。 | 1 | |
| input | 原始的字串。 | "cdbbdbsbz" | |
| {{ mediawiki.external(0) }} | 最後一次比對符合的字元。 | "dbbd" | |
| myRe | lastIndex | 下一個符合項的開始處的索引位置。(這個屬性只在正規表達式使用 g 選項時設定,選項的說明在 使用標誌的進階搜尋。) | 5 |
| source | 模式的文字。在正規表達式建立時更新,而非執行時。 | "d(b+)d" |
表 4.3: 正規表達式的執行結果。
如上第二個範例所示,你可以藉由物件的初始化子使用正規表達式,而無需代入到變數裡。然而,如果你這樣做的話,每一次使用的都會是新的正規表達式。因此,如果你使用這個形式而不代入到變數,之後你就沒辦法存取正規表達式的屬性。舉例來說,假設你有這個 Script︰
<SCRIPT type="text/javascript">
myRe = /d(b+)d/g;
myArray = myRe.exec("cdbbdbsbz");
document.writeln("The value of lastIndex is " + myRe.lastIndex);
</SCRIPT>
Script 顯示︰
The value of lastIndex is 5
然而,如果你有這個 Script︰
<SCRIPT type="text/javascript">
myArray = /d(b+)d/g.exec("cdbbdbsbz");
document.writeln("The value of lastIndex is " + /d(b+)d/g.lastIndex);
</SCRIPT>
他會顯示︰
The value of lastIndex is 0
/d(b+)d/g 在兩個語句中是不同的正規表達式物件,也因此各自對 lastIndex 屬性有著不同的變數。如果你需要存取以物件初始化子所建立的正規表達式的屬性,你應該先把他代入到變數裡。
{{ PreviousNext("Core_JavaScript_1.5_教學:正規表達式模式的編寫", "Core_JavaScript_1.5_教學:正規表達式的運用:括弧子字串的比對結果的運用") }}
{{ languages( {"en": "en/Core_JavaScript_1.5_Guide/Working_with_Regular_Expressions", "es": "es/Gu\u00eda_JavaScript_1.5/Trabajar_con_expresiones_regulares", "fr": "fr/Guide_JavaScript_1.5/Travailler_avec_les_expressions_rationnelles", "ja": "ja/Core_JavaScript_1.5_Guide/Working_with_Regular_Expressions", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Praca_z_wyra\u017ceniami_regularnymi" } ) }}