简化 Go 中的字符串验证:validatorgo 简介
基于 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中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Golang在性能和可扩展性方面优于Python。1)Golang的编译型特性和高效并发模型使其在高并发场景下表现出色。2)Python作为解释型语言,执行速度较慢,但通过工具如Cython可优化性能。

Golang在并发性上优于C ,而C 在原始速度上优于Golang。1)Golang通过goroutine和channel实现高效并发,适合处理大量并发任务。2)C 通过编译器优化和标准库,提供接近硬件的高性能,适合需要极致优化的应用。

goisidealforbeginnersandsubableforforcloudnetworkservicesduetoitssimplicity,效率和concurrencyFeatures.1)installgromtheofficialwebsitealwebsiteandverifywith'.2)

Golang适合快速开发和并发场景,C 适用于需要极致性能和低级控制的场景。1)Golang通过垃圾回收和并发机制提升性能,适合高并发Web服务开发。2)C 通过手动内存管理和编译器优化达到极致性能,适用于嵌入式系统开发。

GoimpactsdevelopmentPositationalityThroughSpeed,效率和模拟性。1)速度:gocompilesquicklyandrunseff,ifealforlargeprojects.2)效率:效率:ITScomprehenSevestAndArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdEcceSteral Depentencies,增强开发的简单性:3)SimpleflovelmentIcties:3)简单性。

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。 Golang以其并发模型和高效性能着称,Python则以简洁语法和丰富库生态系统着称。

Golang和C 在性能上的差异主要体现在内存管理、编译优化和运行时效率等方面。1)Golang的垃圾回收机制方便但可能影响性能,2)C 的手动内存管理和编译器优化在递归计算中表现更为高效。

Golang和C 在性能竞赛中的表现各有优势:1)Golang适合高并发和快速开发,2)C 提供更高性能和细粒度控制。选择应基于项目需求和团队技术栈。
