如何在 JavaScript 中使用正則表示式替換字串?
在本教程中,我們將探討如何使用 JavaScript 中的正則表示式替換字串中的特定子字串。有時我們可能希望將字串中重複出現的子字串替換為其他內容。在這種情況下,正則表示式非常有用。在使用它們來解決當前問題之前,讓我們先了解正則表示式到底是什麼。
正則表示式基本上是一種字元模式,可用於在字串中搜索該模式的不同出現情況。正則表示式使搜尋字元流中特定模式並輕鬆替換它成為可能。例如,考慮正則表示式/ab*c/,它表示我們正在尋找一種模式,其中有一個“a”,後跟 0 個或多個“b”字元,然後是一個“c”。
現在我們知道了正則表示式是什麼,讓我們看看如何在 JavaScript 中使用它們來替換字串中的子字串。由於正則表示式用於表示不同的字元模式,因此它們在查詢字串中的這些模式以及替換它們方面非常有用。
正因為如此,JavaScript 有一個用於字串資料型別的內建方法。其中一個方法是 JavaScript 的replace()方法。使用此函式,我們可以將字串中特定模式的出現替換為我們想要的任何內容,並且可以使用正則表示式來表示我們想要替換的模式。讓我們看看此函式是如何工作的。
語法和引數
replace() 函式的語法如下:
s.replace(pattern, replacement);
這裡s是我們想要替換某些模式的字串。讓我們詳細瞭解這兩個引數:
pattern - 這指的是字串s的子字串,該子字串將轉換為其他內容,即要替換的子字串。此引數可以是字串或正則表示式,用於表示要在字串s中查詢和替換的模式。只會替換s中模式的第一次出現,但是如果在此引數中提供帶有全域性修飾符“g”的正則表示式,則將替換字串s中該正則表示式的所有匹配項。當然,這是一個必需的引數。
replacement - 這表示將取代字串 s 中模式的字串。模式的每次出現都將被替換為此內容。請注意,此引數也可以是一個函式,它返回將用作s中模式每次出現的替換的字串。
此函式輸出另一個具有所需替換的字串。例如:
"abcdea".replace(/a/i, "b");
此操作後,生成的字串將從“abcdea”更改為“bbcdea”。請注意,最後一個a沒有被替換,因為作為模式提供的正則表示式不包含全域性修飾符“g”。
讓我們看一下如何透過程式碼來實現帶有和不帶有全域性修飾符“g”的情況。
示例 1:不帶全域性修飾符“g”。
在下面的示例中,我們使用不帶全域性修飾符“g”的字串 replace() 方法替換字串。
<!DOCTYPE html> <html> <body> <script> var st = "She sells sea shells on the seashore"; document.write("Original string : " + st); var regExp = /Sea/i; var modifiedSt = st.replace(regExp, "river"); document.write("<br>Modified string : " + modifiedSt); </script> </body> </html>
在上面的程式碼中,我們僅使用了一個修飾符:‘i’ 的正則表示式來實現 JavaScript 中字串子字串的替換,並且您可以注意到它只將第一個“sea”更改為“river”,而沒有更改最後一個單詞“seashore”中的第二個“sea”。
示例 2:帶有全域性修飾符“g”。
在下面的示例中,我們使用帶全域性修飾符“g”的字串 replace() 方法替換字串。
<!DOCTYPE html> <html> <body> <script> var st = "She sells sea shells on the seashore"; document.write("Original string : " + st); var regExp = /Sea/ig; var modifiedSt = st.replace(regExp, "river"); document.write("<br>Modified string : " + modifiedSt); </script> </body> </html>
在上面的程式碼中,我們使用了帶有兩個修飾符:‘i’ 和 ‘g’ 的正則表示式來實現 JavaScript 中字串子字串的替換,並且您可以注意到最後一個單詞已從“seashore”更改為“rivershore”,這在前面的示例中沒有發生。
結論
在本教程中,我們瞭解瞭如何在 JavaScript 中使用正則表示式替換字串。這是透過使用 JavaScript 中的string.replace()方法實現的,該方法使用正則表示式來識別和替換字串中的模式。