当前位置: 首页 > news >正文

rust的nutyp验证和validator验证数据的方法

使用nutype验证

Cargo.toml

nutype = { version = "0.5.0", features = ["serde","regex"] }
regex = "1"
thiserror = "1"

modules.rs

#[nutype(sanitize(trim, lowercase),validate(not_empty, len_char_min = 3, len_char_max = 30),derive(AsRef, Clone, Debug, Serialize, Deserialize, PartialEq))]// AsRef表示可以单独访问username,clone复制pub struct Username(String);// #[nutype(// validate(not_empty, len_char_min = 8),// derive(AsRef, Clone, Serialize, Deserialize, PartialEq)// )]#[nutype(validate(with = password_regex, error = ErrorMessage),derive(Debug, PartialEq),)]pub struct Password(String);// 正则匹配手机号
static PHONE_NUMBER_REGEX: LazyLock<Regex> = LazyLock::new(||Regex::new("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$").unwrap());
// 直接使用正则表达式
#[nutype(validate(regex = PHONE_NUMBER_REGEX))]
pub struct PhoneNumber(String);// 自定义方法
#[nutype(validate(with = email_regex, error = ErrorMessage))]
pub struct EmailNumber(String);
// 正则匹配邮箱号
static EMAIL_NUMBER_REGEX: LazyLock<Regex> = LazyLock::new(||Regex::new("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$").unwrap());
pub fn email_regex(name: &str) -> Result<(), ErrorMessage> {match EMAIL_NUMBER_REGEX.captures(name){// 这里可以返回自定义的错误类型None => Err(ErrorMessage::InvalidEmailFormat),Some(_) => Ok(())}
}

使用validator验证

Cargo.toml

validator = {version = "0.18.1",features = ["derive"]}
lazy_static = "1.5.0"

modules.rs

#[derive(Validate, Debug, Default, Clone, Serialize, Deserialize)]pub struct RegisterUserDto {#[validate(length(min = 1, message = "姓名为必填项"))]pub name: String,
#[validate(length(min = 0, message = "用户名不是必填项"))]
pub username: String,#[validate(length(min = 1, message = "电子邮件是必需的"),email(message = "电子邮件无效"))]pub email: String,#[validate(length(min = 1, message = "手机号是必需的"),)]pub phone: String,#[validate(
length(min = 6, message = "密码必须至少为 6 个字符")
)]pub password: String,#[validate(length(min = 1, message = "需要确认密码"),must_match(other = "password", message="密码不匹配"))]#[serde(rename = "passwordConfirm")]
pub password_confirm: String,}
//validator自定义方法是无法使用自定义错误类型的,必须使用crate的,具体看validator crate

http://www.mrgr.cn/news/37774.html

相关文章:

  • Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架。它是 Spring 项目家族的一员,用于构建安全的 Java 应用程序。
  • 32 C 语言指针的长度与运算(指针加减整数、指针自增自减、同类型指针相减、指针的比较运算)
  • 【C++】 vector 迭代器失效问题
  • 复习linux网络编程
  • qt xml解析与处理
  • 使用asio 接收ps流代码并显示
  • WiFi无线连接管理安卓设备工具:WiFiADB
  • 高考技术——pandas使用
  • 指令个人记录
  • 废品回收小程序:回收更加便捷!
  • 构建5G-TSN测试平台:架构与挑战
  • 变种水仙花数 - Lily Number
  • windows@win10@Win11版本号和代号命名变迁@获取或查看windows版本号信息详情方法列举
  • C++11中智能指针以及标准模板库 My_string My_stack
  • 钉钉H5微应用Springboot+Vue开发分享
  • re轻松拆分四则运算expression(^从头匹配、(?:xxxx)非捕获组、| 交替运算符联合演习)
  • Linux下的驱动开发二
  • 修改DNS地址有什么影响
  • Excel根据一个值匹配一行数据
  • HTX DAO重磅亮相Crypto Summit 2024:强势布局CIS地区,推动全球化扩张