正则表达式面试题详解:从基础到高级应用

需积分: 9 0 下载量 159 浏览量 更新于2024-08-05 收藏 31KB MD 举报
本文主要介绍了正则表达式在前端面试中的常见应用,包括数字千分位分割、手机号格式化、trim函数实现、HTML转义以及获取URL查询参数等实际问题的解决方案。 在前端开发和面试中,正则表达式是一项重要的技能。下面将详细解析这些知识点: ### 1. 数字价格千分位分割 正则表达式 `(?!^)(?=(\d{3})+$)` 能将数字自动按每三位添加逗号进行千分位分割。其工作原理是: - `(?!^)` 是一个否定前瞻断言,确保匹配的位置不是字符串的开始。 - `(?=(\d{3})+$)` 是一个肯定前瞻断言,它查找所有后面跟有至少三个数字的位置,直到字符串末尾。 通过这种方式,我们可以避免在数字的开头添加逗号,并且保证每三个数字之间添加一个逗号。 ### 2. 手机号3-3-4格式拼接 手机号的3-3-4格式通常用于提高可读性,例如:1234567890 -> 123-456-7890。这个可以通过简单的字符串切片或正则实现,但具体正则表达式未在文章中给出。通常可以使用以下方法实现: ```javascript '1234567890'.replace(/^(\d{3})(\d{3})(\d{4})$/, '$1-$2-$3') ``` ### 3. trim函数实现 JavaScript内置的`trim()`函数用于删除字符串两端的空白字符,如果需要自定义实现,可以使用正则匹配非空白字符: ```javascript function trim(str) { return str.replace(/^\s+|\s+$/g, ''); } ``` ### 4. HTML转义 在处理用户输入时,为了防止XSS攻击,需要将HTML特殊字符转义。可以使用以下正则替换来实现: ```javascript function escapeHTML(html) { return html.replace(/[&<>"']/g, function(match) { return '&#' + match.charCodeAt(0) + ';'; }); } ``` ### 5. 获取URL查询参数 获取URL中的查询参数,可以使用`URLSearchParams`对象,或者通过正则提取: ```javascript function getQueryParams(url) { var params = {}; var regex = /([^?#]+)=?([^&#]*)/g; var match; while (match = regex.exec(url)) { params[decodeURIComponent(match[1])] = decodeURIComponent(match[2]); } return params; } ``` 以上内容涵盖了正则在前端开发中的常见应用,掌握这些技巧可以帮助开发者更高效地解决问题,提高代码质量。对于面试者来说,熟悉并能灵活运用这些正则表达式技巧,无疑会增加面试成功的几率。