在 javascript 中檢查一個字串是否與 REGEX 匹配

Anika Tabassum Era 2023年1月30日 2022年5月1日
  1. 使用 test() 方法與正規表示式進行字串匹配
  2. 使用 match() 方法與正規表示式進行字串匹配
  3. 使用 exec() 方法與正規表示式進行字串匹配
  4. 使用 matchAll() 方法與正規表示式進行字串匹配
在 javascript 中檢查一個字串是否與 REGEX 匹配

JavaScript 有一種不同的方式來表示正規表示式修飾符、量詞和元字元。但這些通常表示與任何其他正規表示式約定相同的含義。

匹配字串甚至在句子中搜尋字串或字元時會計算正規表示式匹配。從技術上講,我們從給定字串中提取子字串並與正規表示式進行比較。

在這裡,我們將討論通過生成的正規表示式檢索匹配項的三種方法。在這種情況下,我們將使用 test()match()exec()matchAll() 方法。

使用 test() 方法與正規表示式進行字串匹配

關於 test() 方法,首先要了解的是格式推斷匹配條件。這種特定的方法只喜歡布林格式來回答。

方便在有條件的情況下進一步操作功能。所以,一般形式是 regular_expression.test(string)

讓我們跳到程式碼上看個清楚。

程式碼片段:

var string = 'abc123 is a ridiculous name';
var regularExpression = /\w\d+/;
var found = regularExpression.test(string);
console.log(found);

輸出:

使用 test() 方法與正規表示式進行字串匹配

如你所見,這裡的正規表示式描述了查詢單個單詞後跟至少一個或多個數字。根據我們的字串,它有一個匹配,因此結果是 true

使用 match() 方法與正規表示式進行字串匹配

用正規表示式匹配確切的字串需要顯示匹配。當我們依賴 match() 方法時,它返回整個字串的正確匹配。

它將利用正規表示式中的每個表示式,最終輸出將是匹配的字串。

程式碼片段:

var string = 'abc123 is a ridiculous name';
var regex = /i\w/g;
var found = string.match(regex);
console.log(found);

輸出:

使用 match() 方法與正規表示式進行字串匹配

在這種情況下,我們有格式 string.match(regex),這裡正規表示式要求查詢具有 i 後跟任何其他字元詞的子集。所以它成功地做到了,但在下一節中,我們還將看到 match()exec() 方法有何不同。

使用 exec() 方法與正規表示式進行字串匹配

在前面的 match() 方法示例中,我們視覺化了正規表示式 /i\w/g 如何提取所有可能的匹配項。但是在這裡,對於 exec() 方法,答案將只有一個字串的初始匹配。

這就是 exec() 方法所做的事情,這很方便,並且通常作為約束工作。讓我們看一下程式碼以便更好地理解。

程式碼片段:

var string = 'abc123 is a ridiculous name';
var regex = /i\w/g;
var found = regex.exec(string);
console.log(found);

輸出:

使用 exec() 方法與正規表示式進行字串匹配

使用 matchAll() 方法與正規表示式進行字串匹配

exec() 方法無法從字串中定義所有可能的匹配項。因此,更新包括 matchAll() 方法以返回與陣列格式的正規表示式匹配的所有子集。

程式碼片段:

var string = 'abc123 is a ridiculous name';
var regex = /i\w/g;
var found = string.matchAll(regex);
for (var match of found){
    console.log(match);
}

輸出:

使用 matchAll() 方法與正規表示式進行字串匹配

exec()matchAll() 方法之間的核心區別在於 exec() 方法僅返回第一個匹配項,並且當其後跟一個 while 迴圈時,它可以遍歷所有可能的匹配項。

但是在 matchAll() 方法的情況下,如果不啟動迴圈系統,你將無法訪問匹配項。雖然它確實會導致可能的匹配。

這個約定也符合 for...of 迴圈。總的來說,match() 方法滿足所有型別的查詢字串匹配的查詢。

Anika Tabassum Era avatar Anika Tabassum Era avatar

Era is an observer who loves cracking the ambiguos barriers. An AI enthusiast to help others with the drive and develop a stronger community.

LinkedIn GitHub Facebook

相關文章 - JavaScript String