# 验证规则

URL: https://caijiao.org/yup/rules
Source: docs/yup/rules.md
Description: 讲解 Yup 常见的验证规则，如必填、长度限制、正则匹配等。

Yup 提供了丰富的验证规则，可以组合使用以满足各种校验需求。  

## 必填规则

```js
const schema = yup.string().required("该字段不能为空");
````

* `required(message)`：字段必须有值，否则返回错误信息

## 长度与范围

### 字符串长度

```js
const schema = yup.string().min(3, "最少 3 个字符").max(10, "最多 10 个字符");
```

* `min(length, message)`：最小长度
* `max(length, message)`：最大长度

### 数字范围

```js
const schema = yup.number().min(1, "最小值为 1").max(100, "最大值为 100");
```

* `min(value, message)`：最小值
* `max(value, message)`：最大值

## 正则与模式匹配

```js
const schema = yup.string().matches(/^[a-zA-Z0-9]+$/, "只能包含字母和数字");
```

* `matches(regex, message)`：正则匹配，用于复杂格式验证

## 枚举与自定义值

```js
const schema = yup.string().oneOf(["admin", "user"], "只能是 admin 或 user");
```

* `oneOf(array, message)`：值必须在数组中
* `notOneOf(array, message)`：值不能在数组中

## 自定义验证

```js
const schema = yup.number().test(
  "is-even",
  "必须为偶数",
  (value) => value % 2 === 0
);
```

* `test(name, message, fn)`：自定义验证函数，返回 true 或 false

## 小结

* Yup 验证规则灵活，支持组合
* 可自定义错误信息
* 可以用 `test` 自定义复杂逻辑

下一步，我们将学习 **对象与嵌套验证**。
