正則表達式是前端表單驗證、字符串匹配的核心工具,簡潔高效的正則能大幅提升代碼性能。本專欄整理了7道高頻面試題,包含核心正則表達式、代碼實現及關鍵知識點解析,幫你快速掌握正則實用技巧。
一、正則基礎:核心概念與語法
在學習面試題前,先明確幾個高頻基礎語法,這是解題的關鍵:
語法符號 | 含義 | 示例 |
---|---|---|
^ | 匹配字符串開頭(若在[] 內則表示“排除”) | ^http :匹配以http 開頭的字符串 |
$ | 匹配字符串結尾 | .com$ :匹配以.com 結尾的字符串 |
* | 匹配前一個字符0次或多次 | a* :匹配空、a 、aa 、aaa … |
+ | 匹配前一個字符1次或多次 | a+ :匹配a 、aa 、aaa …(不能為空) |
? | 匹配前一個字符0次或1次 | a? :匹配空或a |
{n,m} | 匹配前一個字符n 到m 次 | a{2,5} :匹配aa 、aaa 、aaaa 、aaaaa |
\w | 匹配字母、數字、下劃線(等價于[a-zA-Z0-9_] ) | \w+ :匹配abc 、123 、a_b … |
\d | 匹配數字(等價于[0-9] ) | \d{2} :匹配01 、99 等兩位數字 |
[] | 字符集合,匹配集合內任意一個字符 | [a-z] :匹配任意小寫字母 |
\u4e00-\u9fa5 | 匹配Unicode編碼中的中文漢字 | [\u4e00-\u9fa5]+ :匹配1個及以上中文 |
|
代表邏輯“或”,匹配左右任意一個表達式, a|b
代表匹配a或b
二、高頻面試題:正則實現與解析
1. 需求:輸入的字符串必須包含三個連續的k
正則表達式
var reg = /k{3}/;
代碼驗證
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>驗證連續三個k</title>
</head>
<script>
var reg = /k{3}/;
// 測試:含"kkk"返回true,不含返回false
console.log(reg.test('kakk')); // false(僅2個k)
console.log(reg.test('kkk')); // true(3個連續k)
console.log(reg.test('aabkkkc')); // true(中間含3個連續k)
</script>
<body></body>
</html>
解析
k{3}
:精確匹配“k”連續出現3次,無需^
和$
(只需“包含”,無需“整串匹配”)。
2. 需求:輸入的字符串必須全部是漢字
正則表達式
var reg = /^[\u4e00-\u9fa5]+$/;
代碼驗證
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">