在 javascript 中檢查一個字串是否與 REGEX 匹配
-
使用
test()
方法與正規表示式進行字串匹配 -
使用
match()
方法與正規表示式進行字串匹配 -
使用
exec()
方法與正規表示式進行字串匹配 -
使用
matchAll()
方法與正規表示式進行字串匹配
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);
輸出:
如你所見,這裡的正規表示式描述了查詢單個單詞後跟至少一個或多個數字。根據我們的字串,它有一個匹配,因此結果是 true
。
使用 match()
方法與正規表示式進行字串匹配
用正規表示式匹配確切的字串需要顯示匹配。當我們依賴 match()
方法時,它返回整個字串的正確匹配。
它將利用正規表示式中的每個表示式,最終輸出將是匹配的字串。
程式碼片段:
var string = 'abc123 is a ridiculous name';
var regex = /i\w/g;
var found = string.match(regex);
console.log(found);
輸出:
在這種情況下,我們有格式 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);
輸出:
使用 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);
}
輸出:
exec()
和 matchAll()
方法之間的核心區別在於 exec()
方法僅返回第一個匹配項,並且當其後跟一個 while
迴圈時,它可以遍歷所有可能的匹配項。
但是在 matchAll()
方法的情況下,如果不啟動迴圈系統,你將無法訪問匹配項。雖然它確實會導致可能的匹配。
這個約定也符合 for...of
迴圈。總的來說,match()
方法滿足所有型別的查詢字串匹配的查詢。