基于 js 库 validator.js 的字符串验证器和消毒器库
为什么选择验证器go?
为什么不使用流行的 Go 库,如 Package validator 或 govalidator?虽然这两个库都很出名,但 validatorgo 专注于独立字符串验证,并提供了受 validator.js 启发的广泛的可定制验证器集合,而这两个 Go 库都没有完全实现。
以下是 validatorgo 与 go-playground/validator 和 govalidator 相比的突出之处:
1. 与 go-playground/validator 相比
直接字符串验证:go-playground/validator 主要用于使用标签验证结构字段,这非常适合处理 JSON 或基于结构的数据。然而,它并不是为验证单个字符串而设计的,ValidatorGo 可以无缝地验证单个字符串,而不需要结构标签或额外的设置。
性能:go-playground/validator 依赖反射来动态检查结构标签。反射虽然功能强大,但会带来性能开销,尤其是在验证大型或复杂数据结构时。 validatorgo 避免了反射,从而提高了性能,对于需要单字段验证的场景来说,速度更快、效率更高。
2. 与 asasskevich/govalidator 相比
- 定制和灵活性:govalidator 为字符串提供了一系列验证器,但是 validatorgo 通过允许单个验证器的特定选项和配置来增强灵活性。例如,可以自定义日期格式或区域设置规范,使开发人员能够更好地控制根据项目需求定制的验证规则。
项目动机
我创建了 validatorgo 作为另一个名为 ginvalidator 的 Go 库的依赖项,该库验证 Go Web 应用程序中的 HTTP 请求。受 Express-validator(Node.js 和 Express 的流行验证库)的启发,ValidatorGo 填补了 Go 生态系统中的空白,实现高效、可定制且简单的字符串验证。由于其他库要么矫枉过正,缺乏功能,要么不满足我的用例,我构建了 validatorgo 来提供实用的解决方案。
安装
使用 go get。
go get github.com/bube054/validatorgo
然后将包导入到您自己的代码中。
import ( "fmt" "github.com/bube054/validatorgo" )
如果您不满意使用长 validatorgo 包名称,您可以这样做。
go get github.com/bube054/validatorgo
简单的验证器示例
import ( "fmt" "github.com/bube054/validatorgo" )
一些验证器
下面是 validatorgo 包提供的验证器列表,涵盖了各种字符串格式和类型,使其能够满足多种验证需求。
验证器 | 描述 |
---|---|
包含 | 检查字符串是否包含指定的子字符串。 |
等于 | 验证字符串是否完全等于比较字符串。 |
IsAbaRouting | 检查字符串是否是有效的 ABA 路由号码(美国银行账户)。 |
之后 | 验证日期字符串是否在指定日期之后。 |
IsAlpha | 确保字符串仅包含字母 (a-zA-Z)。 |
是字母数字 | 验证字符串是否仅包含字母和数字。 |
是Ascii | 检查字符串是否仅包含 ASCII 字符。 |
IsBase32 | 检查字符串是否是有效的 Base32 编码值。 |
IsBase64 | 验证字符串是否采用 Base64 编码。 |
之前 | 确保日期早于指定日期。 |
是布尔值 | 检查字符串是“true”还是“false”。 |
是信用卡 | 验证字符串是否是有效的信用卡号。 |
是货币 | 检查字符串是否是有效的货币格式。 |
是日期 | 验证字符串是否为有效日期。 |
是十进制 | 确保字符串代表有效的十进制数。 |
是电子邮件 | 检查字符串是否是有效的电子邮件地址格式。 |
为空 | 验证字符串是否为空。 |
是FQDN | 检查字符串是否是完全限定的域名。 |
IsFloat | 确保字符串表示浮点数。 |
IsHexColor | 验证字符串是否是有效的十六进制颜色(例如,#FFFFFF)。 |
IsIP | 检查字符串是否是有效的 IP 地址(IPv4 或 IPv6)。 |
是ISO8601 | 验证字符串是否采用 ISO8601 日期格式。 |
长度 | 检查字符串的长度是否在指定范围内。 |
IsMimeType | 验证字符串是否为有效的 MIME 类型。 |
是手机 | 检查字符串是否是指定区域设置的有效手机号码。 |
IsMongoID | 验证字符串是否是有效的 MongoDB ObjectID。 |
是数字 | 确保字符串仅包含数字字符。 |
是邮政编码 | 检查字符串是否是指定区域设置的有效邮政编码。 |
IsRFC3339 | 验证字符串是否采用 RFC3339 日期格式。 |
是鼻涕虫 | 检查字符串是否适合 URL(仅限字母、数字和破折号)。 |
密码强 | 确保字符串满足常见密码强度要求。 |
IsURL | 验证字符串是否为 URL。 |
IsUUID | 检查字符串是否是有效的 UUID(版本 1-5)。 |
是大写 | 确保字符串全部大写。 |
是增值税 | 检查字符串是否是指定国家/地区的有效增值税号。 |
比赛 | 验证字符串是否与指定的正则表达式匹配。 |
该表应该涵盖 validatorgo 中当前可用的大多数验证器。请务必参阅包的文档以了解每个验证器的更详细用法。
⚠ 注意
当使用需要选项结构(指针或非指针)的验证器时,请始终显式地为所有结构字段提供值。
与 validator.js 中缺少的字段会自动设置为默认值不同,Go 使用严格类型。
这意味着布尔值的缺失值默认为 false,数字类型的缺失值默认为 0,等等。
如果您习惯了 JavaScript 版本,不指定所有字段可能会导致意外行为。
示例
go get github.com/bube054/validatorgo
简单的消毒剂示例
import ( "fmt" "github.com/bube054/validatorgo" )
消毒剂
Sanitizer | Description |
---|---|
Trim | Removes whitespace from both ends of the string. |
LTrim | Removes whitespace from the left side of the string. |
RTrim | Removes whitespace from the right side of the string. |
ToLower | Converts the entire string to lowercase. |
ToUpper | Converts the entire string to uppercase. |
Escape | Escapes HTML characters in the string to prevent injection attacks. |
Unescape | Reverts escaped HTML characters back to normal characters. |
NormalizeEmail | Standardizes an email address, e.g., removing dots in Gmail addresses. |
Blacklist | Removes characters from the string that match specified characters or patterns. |
Whitelist | Retains only characters in the string that match specified characters or patterns. |
Replace | Replaces occurrences of a substring with a specified replacement. |
StripLow | Removes control characters, optionally allowing some specified ones. |
TrimSpace | Trims all types of whitespace from both ends of the string. |
ToBoolean | Converts common truthy and falsy values in strings into boolean true or false. |
ToInt | Converts a numeric string into an integer, if possible. |
ToFloat | Converts a numeric string into a floating-point number, if possible. |
这些清理程序通常用于通过删除或修改潜在不需要或危险的字符来确保数据一致性和安全性。
请务必参考 validatorgo 官方文档,了解每种消毒剂的具体实现和示例。
概括
validatorgo 如果您需要的话,是理想的选择:
- 针对各个字段进行高效、无反射的验证,而不会产生与基于结构的反射相关的性能成本。
- 高度可定制与现代数据格式一致的验证选项,提供与 validator.js 相同的稳健性。
通过 validatorgo,您可以获得一个专门为字符串验证而设计的工具,支持 Go 中的独立和 Web 应用程序要求。
维护者
- bube054 - Attah Gbubemi David(作者)
以上是简化 Go 中的字符串验证:validatorgo 简介的详细内容。更多信息请关注PHP中文网其他相关文章!

OpenSSL,作为广泛应用于安全通信的开源库,提供了加密算法、密钥和证书管理等功能。然而,其历史版本中存在一些已知安全漏洞,其中一些危害极大。本文将重点介绍Debian系统中OpenSSL的常见漏洞及应对措施。DebianOpenSSL已知漏洞:OpenSSL曾出现过多个严重漏洞,例如:心脏出血漏洞(CVE-2014-0160):该漏洞影响OpenSSL1.0.1至1.0.1f以及1.0.2至1.0.2beta版本。攻击者可利用此漏洞未经授权读取服务器上的敏感信息,包括加密密钥等。

本文演示了创建模拟和存根进行单元测试。 它强调使用接口,提供模拟实现的示例,并讨论最佳实践,例如保持模拟集中并使用断言库。 文章

本文探讨了GO的仿制药自定义类型约束。 它详细介绍了界面如何定义通用功能的最低类型要求,从而改善了类型的安全性和代码可重复使用性。 本文还讨论了局限性和最佳实践

本文讨论了GO的反思软件包,用于运行时操作代码,对序列化,通用编程等有益。它警告性能成本,例如较慢的执行和更高的内存使用,建议明智的使用和最佳

本文使用跟踪工具探讨了GO应用程序执行流。 它讨论了手册和自动仪器技术,比较诸如Jaeger,Zipkin和Opentelemetry之类的工具,并突出显示有效的数据可视化

本文讨论了GO中使用表驱动的测试,该方法使用测试用例表来测试具有多个输入和结果的功能。它突出了诸如提高的可读性,降低重复,可伸缩性,一致性和A


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境