使用 JavaScript 計算字串中的出現次數
我們將使用 JavaScript 匹配方法來計算字串中特定單詞/字元的總出現次數。但在我們瞭解這一點之前,讓我們先了解一下什麼是正規表示式。
JavaScript 中 RegEx
的概念
正規表示式是一種可以實現特定字串模式的搜尋。JavaScript 還支援將正規表示式作為物件。
這些模式與 split()
、replace()
、search()
、match()
、matchAll()
和 replaceAll()
一起使用。
構造正規表示式有兩種方法,使用文字正規表示式或呼叫 RegEx 的建構函式。
有關 RegEx 的更多資訊,請參見 RegEx
的文件。
在繼續計算匹配字串的出現次數之前,讓我們瞭解一些常見的模式。
\d
是匹配任何數字/數字的正規表示式。它類似於[0-9]
。\w
是一個正規表示式,匹配A
-Z
、a
-z
、0
-9
和_
範圍內的任何給定單詞字元程式碼。\s
是匹配每個空白字元的正規表示式,例如空格、製表符、換行符。\b
是一個正規表示式,它匹配單詞字元和非單詞字元之間的任何單詞邊界位置或位置(字串的開頭/結尾)。[A-Z]
是一個正規表示式,匹配A
-Z
範圍內的任何給定字元程式碼。[0-9]
是一個正規表示式,匹配0
-9
範圍內的任何給定字元程式碼。
每個 RegEx 都包含某些標誌。每個標誌都有其含義,它為正規表示式提供了額外的屬性。
下面列出了其中一些:
i
標誌不區分大小寫,這意味著整個表示式不區分大小寫。g
標誌表示全域性搜尋,它保留最後一個匹配的索引,允許後續搜尋從前一個匹配的末尾開始。如果沒有全域性標誌,後續搜尋將返回相同的匹配項。m
標誌表示多行。當多行標誌開啟時,開始和結束錨點^ 和 $
匹配一行的開始和結束,而不是整個字串的開始和結束。u
標誌代表 Unicode。通過設定此標誌,使用者可以使用\x{FFFFF}
形式的 Unicode 擴充套件轉義。
語法:
const regEx = /pattern/;
const regEx = new RegExp('pattern');
function phonenumber() {
const indiaRegex = /^\+91\d{10}$/;
const inputText = document.getElementById('phoneNumber').value;
if (inputText.match(indiaRegex)) {
console.log('Valid phone number');
} else {
console.log('Not a valid Phone Number');
}
}
在 JavaScript 中使用 match()
計算字串中的出現次數
match()
方法是一個內建的 JavaScript 方法。此方法檢索將字串/字元與原始字串提供的正規表示式進行匹配的結果。
語法:
match(regexp)
它將正規表示式作為輸入引數,並根據原始字串查詢匹配的字串/字元。
它是一個可選引數。如果在 match 方法中沒有將正規表示式作為引數傳遞,它將返回帶有空字串的陣列。
根據正規表示式的 g
(全域性)標誌,它返回陣列。如果通過了 g
標誌,則返回所有匹配的字串/字元。
有關詳細資訊,請參閱 match
方法文件。
var inputString = 'Hello World. This is a string.';
var count = (inputString.match(/is/g) || []).length;
console.log(count);
在上面的程式碼中,我們試圖確定 is
這個詞的總出現次數,而不管它在哪裡。
如果你傳遞 g
(全域性)標誌,它將嘗試找出所有匹配項。例如,This
中的 is
是有效匹配。
一旦你在任何瀏覽器中執行上述程式碼,它就會列印出類似這樣的內容。
輸出:
2
要檢查完整的工作程式碼,單擊此處。
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn