本文主要介绍了正则表达式在前端面试中的常见应用,包括数字千分位分割、手机号格式化、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;
}
```
以上内容涵盖了正则在前端开发中的常见应用,掌握这些技巧可以帮助开发者更高效地解决问题,提高代码质量。对于面试者来说,熟悉并能灵活运用这些正则表达式技巧,无疑会增加面试成功的几率。