正则表达式实用面试题与代码解析专栏
正则表达式是前端表单验证、字符串匹配的核心工具,简洁高效的正则能大幅提升代码性能。本专栏整理了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">