根据提供的文档标题“史上最详细最全的正则参数校验 - 21.01.28.md”以及描述“史上最详细最全的正则参数校验,没有之一”,我们可以看出这是一篇详细介绍如何利用正则表达式进行参数校验的文章。文章主要涉及了Java中的正则表达式的应用,用于验证不同类型的输入数据的有效性。接下来,我们将根据文档中的具体示例来深入探讨这些正则表达式的细节与应用场景。
### 1. 注册账号:username
#### 正则表达式:
```regex
/^[A-Za-z][-_!@#$%^&*a-zA-Z0-9]{4-15}$/
```
#### 规则解析:
1. **开头必须是大、小写英文字母**:确保用户名的第一个字符是英文字母,这可以通过`^[A-Za-z]`实现。
2. **允许英文、数字、常规特殊字符**:除了开头字符外,可以接受的字符包括英文字母、数字及特殊字符`-_!@#$%^&*`。这里通过`[-_!@#$%^&*a-zA-Z0-9]{4-15}`表示,其中`4-15`表示用户名的总长度在5到16个字符之间(包含首字母)。
3. **不允许空格**:虽然未明确指出,但根据给出的特殊字符列表,可以看出空格并未被允许。
### 2. 密码:password
#### 正则表达式:
```regex
^(?![a-zA-z]+$)(?!\d+$)(?![-_!@#$%^&*]+$)[a-zA-Z\d-_!@#$%^&*]{6,16}$
```
#### 规则解析:
1. **格式需为:字母+数字,字母+特殊字符,数字+特殊字符**:确保密码中至少包含两种不同的类型(字母、数字、特殊字符)。这里通过`(?![a-zA-z]+$)(?!\d+$)(?![-_!@#$%^&*]+$)`实现,分别排除了纯字母、纯数字和纯特殊字符的情况。
2. **允许大、小写英文字母+数字**:这通过`[a-zA-Z\d]`来实现。
3. **允许特殊字符(-_!@#$%^&*)**:通过`[-_!@#$%^&*]`表示。
4. **不允许空格**:同上,空格并未被列出作为允许的字符。
5. **允许长度:6-16位**:通过`{6,16}`实现。
### 3. 昵称/用户名:name
#### 正则表达式:
```regex
/^[a-zA-Z\u4e00-\u9fa5][-_!@#$%^&*a-zA-Z0-9·\s\u4e00-\u9fa5]{1,31}$/
```
#### 规则解析:
1. **首位必须为大、小写英文字母或中文**:确保第一个字符是英文字母或中文字符,通过`^[a-zA-Z\u4e00-\u9fa5]`实现。
2. **允许中文、大小写英文字母+数字**:除了首字符外,还可以接受中文、英文字母和数字,这通过`[-_!@#$%^&*a-zA-Z0-9·\s\u4e00-\u9fa5]{1,31}`表示。
3. **允许特殊字符**:除了上述字符外,还允许特殊字符`-_!@#$%^&*`和空格`\s`。
4. **允许长度:2-32位**:通过`{1,31}`表示,考虑到首字符占用了1位,因此总长度为2到32位。
### 4. 手机号:phone
#### 正则表达式:
```regex
^1\d{10}$
```
#### 规则解析:
1. **只允许开头为1的11位数字**:确保手机号以1开头,并且总长度为11位数字,通过`^1\d{10}$`实现。这里使用`\d`代表任意数字。
### 5. 邮箱:email
#### 正则表达式:
```regex
^[a-zA-Z0-9_.-]{2,16}@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$
```
#### 规则解析:
1. **@之前必须有内容且只能是字母(大小写)、数字、下划线、减号、点**:确保在@符号之前的字符只能是这些指定的字符,并且长度为2到16个字符,通过`^[a-zA-Z0-9_.-]{2,16}`实现。
2. **@和最后一个.之间必须有内容且只能是字母(大小写)、数字、点、减号**:确保这部分也只包含指定的字符,并且长度为2到多个字符,通过`@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*`实现。
3. **最后一个.之后必须有内容且内容只能是字母(大小写)、数字**:确保域名后缀部分只包含这些字符,并且长度为2到6个字符,通过`\.[a-zA-Z0-9]{2,6}$`实现。
以上就是关于这篇文档中涉及到的正则表达式的详细解析。每种类型的校验都旨在确保输入数据的格式正确性和安全性,这对于实际的应用开发来说非常重要。