歡迎閱讀 JavaScript 正規表示式完整指南!在本文中,我們將詳細探討什麼是正規表示式、如何在 JavaScript 中使用它們以及它們如何幫助您簡化和優化程式碼。從基礎到實際範例,我們將涵蓋您在 JavaScript 專案中充分利用正規表示式所需了解的所有內容。那麼就讓我們開始吧!
正規表示式簡介
正規表示式是用於尋找和操作字串中的文字的搜尋模式。它們由文字字元和元字元的組合組成,定義了在文字中尋找匹配項的特定規則。這些規則可以包括搜尋特定字元、字元範圍、重複、替代等等。
在 JavaScript 中,正規表示式是使用類別建立的 RegExp 或使用文字 /patrón/。模式是正規表示式本身,它被括在正斜線之間。我們來看一個簡單的例子:
const regex = /hola/;
在這個例子中,我們建立了一個正規表示式,它將在文字中搜尋字串「hello」。現在我們對正規表示式有了基本的了解,讓我們來探索一下在 JavaScript 中使用它們的一些關鍵概念和進階技術。
正規表示式的基本語法
JavaScript 中的正規表示式由幾個關鍵元素組成,讓我們可以定義更複雜的搜尋模式。這些元素包括文字字元、元字元、字元類別、量詞、錨點等等。讓我們來看看這些元素的一些範例:
文字字元
文字字元是搜尋文字中出現的字元。例如,正規表示式 /hola/ 將在文字字串中搜尋字元序列“hello”。需要注意的是,正規表示式區分大小寫,因此 /hola/ 將不會符合“Hello”或“HELLO”。
元字元
元字元是正規表示式中具有特殊意義的特殊字元。例如,元字符 . 它用於表示除換行符之外的任何字元。另一個常見的元字元是 ^,用於指示文字字串的開始。例如,正規表示式 /^hola/ 將匹配以“hello”開頭的任何文字字串。
字元類
字元類別用於搜尋特定集合內的任何字元。例如,正規表示式 /[aeiou]/ 將匹配文字字串中的任何元音。也可以在字元類別中使用字元範圍。例如,正規表示式 /[a-z]/ 將匹配任意小寫字母。
量詞
量詞用於指定正規表示式中元素出現的次數。例如,量詞 * 表示前一個元素可以出現零次或多次。量詞 + 表示前一個元素應該出現一次或多次。例如,正規表示式 /a+/ 將匹配文字字串中的一個或多個“a”。
錨點
錨點用於指示文字字串中匹配的位置。例如,錨 \b 匹配單字邊界。例如,正規表示式 /bholab/ 僅匹配單字“hello”作為 完整單字,而不匹配包含“hello”的較長單字。
以上只是 JavaScript 中正規表示式基本語法的幾個範例。隨著本文的深入,我們將探討更多在 JavaScript 中使用正規表示式的高階概念和技巧。
基本匹配搜尋
使用正規表示式執行的最常見操作之一是在文字字串中搜尋匹配項。在 JavaScript 中,我們可以使用方法 search() 在文字字串中尋找正規表示式的第一個符合項目。我們來看一個例子:
const texto = "¡Hola, mundo!"; const regex = /mundo/; const indice = texto.search(regex); console.log(indice); // 7
在這個例子中,我們使用了方法 search() 尋找正規表示式的第一個符合項 /mundo/ 在文字字串「Hello, world!」中方法 search() 傳回找到的第一個符合項目的索引,如果未找到符合項,則傳回 -1。
除了方法之外 search()JavaScript 也提供了其他有用的方法來處理正規表示式,例如 match(), replace(), split() y test()。每種方法都有其用途,可以根據您的特定需求使用。
使用修飾符和標誌
在 JavaScript 中,正規表示式可以包含修飾符和標誌,從而實現更靈活和客製化的搜尋。修飾符被添加到正規表示式的末尾並修改其行為。一些最常見的修飾符是:
i (不敏感)
修飾符 i 用於執行不區分大小寫的搜尋。例如,正規表示式 /hola/i 將匹配“hello”和“Hello”或“HELLO”。
g(全域)
修飾符 g 它用於對整個文字字串執行全域搜索,而不是在找到第一個匹配項時停止。例如,正規表示式 /a+/g 將匹配文字字串中所有出現的一個或多個“a”。
m(多行)
修飾符 m 它用於對文字字串中的多行執行搜尋。例如,正規表示式 /^hola/m 將匹配文字字串中每行開頭的單字“hello”。
除了修飾符之外,JavaScript 還允許在正規表示式中使用標誌。使用該類別建立正規表示式時,在第二個斜杠後面添加標誌 RegExp。一些最常見的標誌是:
i (不敏感)
就像修飾符 i,標誌 i 執行不區分大小寫的搜尋。例如,正規表示式 new RegExp("hola", "i") 將匹配“hello”和“Hello”或“HELLO”。
g(全域)
就像修飾符 g,標誌 g 對整個文字字串執行全域搜尋。例如,正規表示式 new RegExp("a+", "g") 將匹配文字字串中所有出現的一個或多個“a”。
m(多行)
就像修飾符 m,標誌 m 在文字字串中的多行上執行搜尋。例如,正規表示式 new RegExp("^hola", "m") 將匹配文字字串中每行開頭的單字“hello”。
在 JavaScript 正規表示式中使用修飾符和標誌對於根據不同情況和特定需求自訂搜尋非常有用。不妨嘗試一下,探索如何在程式碼中充分利用這些功能。
元字符和特殊字符
元字元和特殊字元是正規表示式中的關鍵元素,可以讓我們執行更強大、更靈活的搜尋。我們已經提到了一些元字符,例如 . y ^,但您也可以在正規表示式中使用更多。讓我們來看看一些最常見的元字元和特殊字元:
。 (點)
元字元 . 它用於表示除換行符之外的任何字元。例如,正規表示式 /h.t/ 將匹配“hat”、“hot”、“hit”以及任何其他以“h”開頭並以“t”結尾的三個字母的單字。
\(反斜線)
反斜線用於轉義正規表示式中的特殊字元。例如,如果您想在文字字串中搜尋文字句點,則必須使用反斜線將其轉義。正規表示式 /www\.google\.com/ 將匹配文字字串“www.google.com”。
\d(數字)
元字元 \d 用於搜尋從 0 到 9 的任意數字。 /\d+/ 將匹配文字字串中的任意一個或多個數字。
\w(字母數字字元)
元字元 \w 用於搜尋任何字母數字字元(大寫和小寫字母、數字和底線)。例如,正規表示式 /\w+/ 將匹配文字字串中一個或多個字母數字字元的任意單字。
這些只是正規表示式中可以使用的元字元和特殊字元的幾個範例。隨著您對 JavaScript 中的正規表示式越來越熟悉,您會發現各種各樣的選項可以優化您的搜尋和文字操作。
字元類別和範圍
字元類別是正規表示式中的另一個關鍵元素,它允許我們搜尋特定集合中的任何字元。在 JavaScript 中,我們可以使用括號 [] 定義一個字元類別。讓我們來看一些字元類別和範圍的例子:
[哎喲]
字元類 [aeiou] 將匹配文字字串中的任何元音。例如,正規表示式 /[aeiou]/ 將符合文字字串中的「a」、「e」、「i」、「o」或「u」。
[az]
字元範圍 [a-z] 將符合英文字母中的任意小寫字母。例如,正規表示式 /[a-z]/ 將匹配文字字串中的任意小寫字母。
[0-9]
字元範圍 [0-9] 將匹配文字字串中從 0 到 9 的任意數字。例如,正規表示式 /[0-9]/ 將匹配任意一位數字。
[英文]
字元類 [A-Za-z] 將符合英文字母中的任意大寫或小寫字母。例如,正規表示式 /[A-Za-z]/ 將匹配文字字串中的任何字母。
字元類別和範圍允許我們定義在正規表示式中搜尋的特定字元集。使用它們來根據您的特定需求和限制自訂您的搜尋。
量詞和重複
量詞和重複是正規表示式中的關鍵元素,允許我們指定文字字串中元素出現的次數。讓我們來看看 JavaScript 中一些最常見的量詞:
*(星號)
量詞 * 表示前一個元素可以出現零次或多次。例如,正規表示式 /a*/ 將匹配文字字串中的零個或多個“a”。
+(更多)
量詞 + 表示前一個元素應該出現一次或多次。例如,正規表示式 /a+/ 將匹配文字字串中的一個或多個“a”。
? (問題)
量詞 ? 表示前一個元素可能出現零次或一次。例如,正規表示式 /colou?r/ 將匹配“color”和“colour”。
{n}(恰好 n 次)
量詞 {n} 表示前一個元素必須出現恰好 n 次。例如,正規表示式 /a{3}/ 將精確匹配文字字串中的三個“a”。
{n,}(至少 n 次)
量詞 {n,} 表示前一個元素必須出現至少n次。例如,正規表示式 /a{2,}/ 將匹配文字字串中的兩個或多個“a”。
{n,m}
量詞 {n,m} 表示前一個元素必須出現至少n次,最多m次。例如,正規表示式 /a{2,4}/ 將匹配文字字串中的兩個、三個或四個「a」。
這些只是可以在正規表示式中使用的量詞的幾個範例。量詞允許我們在文字搜尋和操作中指定重複模式,從而更容易從文字字串中提取特定資訊。
錨點和詞邊界
錨點和詞邊界是允許我們指示文字字串內匹配位置的元素。當我們想要搜尋整個單字或確保匹配項位於行首或行末時,這些元素特別有用。讓我們來看一些錨點和單字邊界的例子:
\b(單字邊界)
字數限制 \b 匹配字母數字字元和非字母數字字元之間的邊界。例如,正規表示式 /\bjavascript\b/ 只會將單字「javascript」配對為完整的單字,而不會符合包含「javascript」作為一部分的較長單字。
^(行首)
性格 ^ 它用於指示文字字串中一行的開始。例如,正規表示式 /^hola/ 將匹配文字字串中每行開頭的單字“hello”。
$(行尾)
性格 $ 它用於指示文字字串中一行的結束。例如,正規表示式 /mundo$/ 將匹配文字字串中每行末尾的單字“world”。
\A(文字開始)
性格 \A 它用於指示文字字串中所有文字的開始,而不僅僅是一行的開始。例如,正規表示式 /^\AHola/ 將匹配整個文字開頭的單字“Hello”。
\Z(文字結束)
性格 \Z 用於指示文字字串中所有文字的結束,而不僅僅是一行的結束。例如,正規表示式 /Mundo\Z/ 將匹配整個文字末尾的單字“World”。
錨點和字詞邊界允許我們在文字字串中的特定位置搜尋匹配項,這在我們想要確保匹配項位於特定位置的情況下很有用。
分組和捕獲
群組和捕獲是正規表示式中的高級元素,允許我們對子表達式進行分組並捕獲它們以供以後使用。讓我們看看群組和捕獲是如何工作的:
( ) (括號)
括號裡是 他們使用分組 正規表示式中的子表達式。例如,正規表示式 /(d{2})-(d{2})-(d{4})/ se 用於搜尋日期 格式為“dd-mm-yyyy。團體 ( ) 它們允許我們分別捕獲日、月、年的值。
\1、\2、\3(群組引用)
群組引用用於引用正規表示式中先前捕獲的群組。例如,正規表示式 /(\w+) \1/ 將匹配任何後跟相同單字重複的單字。例如「你好你好」、「world world」等等。
?:(非捕獲組)
符號 ?: 它用於創建非捕獲組。當我們想要對子表達式進行分組,但不想捕捉結果時,就會使用這些群組。例如,正規表示式 /https?:\/\/(?:www\.)?google\.com/ 將符合“http://www.google.com”和“https://google.com”,但只會擷取 URL 的相關部分。
分組和捕獲功能使我們能夠以更有效率、更易讀的方式建立和組織正規表示式。它們還使我們能夠捕獲特定值,以便在應用程式中稍後使用。
使用正規表示式的有用方法
JavaScript 提供了幾種使用正規表示式的有用方法。這些方法允許我們使用正規表示式執行常見操作,例如搜尋、替換和分割文字字串。讓我們看看其中一些方法:
匹配()
方法 match() 它用於在文字字串中查找正則表達式的所有匹配項並傳回包含結果的陣列。例如:
const texto = "¡Hola, mundo!"; const regex = /o/g; const coincidencias = texto.match(regex); console.log(coincidencias); // ["o", "o"]
在這個例子中,我們使用了方法 match() 尋找正規表示式的所有符合項 /o/g 在文字字串「Hello, world!」中方法 match() 傳回包含所有找到的符合項目的陣列。
代替 ()
方法 replace() 用於以新值取代文字字串中正規表示式的符合項目。例如:
const texto = "¡Hola, mundo!"; const regex = /mundo/; const nuevoTexto = texto.replace(regex, "amigo"); console.log(nuevoTexto); // "¡Hola, amigo!"
在這個例子中,我們使用了方法 replace() 替換正規表示式匹配 /mundo/ 在文字字串「Hello, world!」中尋找「朋友」這個詞方法 replace() 傳回替換後的新文字字串。
分裂()
方法 split() 用於使用正規表示式作為分隔符號將文字字串拆分為子字串數組。例如:
const texto = "Hola,mundo,amigo"; const regex = /,/g; const subcadenas = texto.split(regex); console.log(subcadenas); // ["Hola", "mundo", "amigo"]
在這個例子中,我們使用了方法 split() 使用正規表示式將文字字串“Hello,world,friend”拆分為子字串數組 /,/g 作為分隔符號。方法 split() 傳回包含結果子字串的陣列。
測試()
方法 test() 它用於檢查正則表達式在文字字串中是否有任何匹配項。該方法返回 true 如果有匹配項,且 false 否則。例如:
const texto = "Hola, mundo!"; const regex = /mundo/; const resultado = regex.test(texto); console.log(resultado); // true
在這個例子中,我們使用了方法 test() 檢查正規表示式 /mundo/ 在文字字串“Hello, world!”中有任何匹配。方法 test() 帶回 true 因為有巧合。
這些只是在 JavaScript 中使用正規表示式的一些最常用方法。每種方法都有其用途,可以根據您的特定需求使用。對它們進行試驗並發現它們如何使您更輕鬆、更快地使用正規表示式。
Preguntas frecuentes
JavaScript 中的正規表示式是什麼? JavaScript 中的正規表示式是用於在字串中尋找和操作文字的搜尋模式。
如何在 JavaScript 中建立正規表示式? JavaScript 中的正規表示式是使用類別建立的 RegExp 或使用文字 /patrón/.
正規表示式中的修飾符和標誌有什麼區別? 修飾符被添加到正規表示式的末尾並修改其行為。使用該類別建立正規表示式時,在第二個斜杠後面添加標誌 RegExp.
這兩種方法有什麼差別 match() 和方法 test()? 方法 match() 它用於在文字字串中查找正則表達式的所有匹配項並傳回包含結果的陣列。方法 test() 它用於檢查正則表達式在文字字串中是否有任何匹配項並傳回布林值。
如何使用正規表示式中的群組捕獲特定值? 團體 ( ) 在正規表示式中允許您捕獲特定的子表達式。然後您可以使用引用來引用這些群組 \1, \2等等。
我可以使用哪些方法來處理 JavaScript 中的正規表示式? 在 JavaScript 中使用正規表示式的一些有用方法包括 match(), replace(), split() y test()。每種方法都有其用途,可以根據您的特定需求使用。
結論
正規表示式是 JavaScript 中處理文字的強大工具。理解正規表示式的基礎知識、語法和進階技巧,將使您能夠有效且準確地搜尋、替換和操作文字字串。從基本的配對到使用修飾符、分組和其他實用方法,您已經學會如何在 JavaScript 專案中充分利用正規表示式。
記得練習和嘗試不同的模式和用例,以加強您對正規表示式的理解和熟悉程度。不要猶豫使用正規表示式來提高程式碼的效率和品質!