Rumah > Artikel > pembangunan bahagian belakang > Mempermudahkan Pengesahan Rentetan dalam Go: Memperkenalkan validatorgo
Une bibliothèque de validateurs et de désinfectants de chaînes, basée sur la bibliothèque js validator.js
Pourquoi ne pas utiliser les bibliothèques Go populaires comme Package Validator ou Govalidator ? Bien que les deux bibliothèques soient bien connues, validatorgo se concentre sur la validation de chaînes autonome et fournit une vaste collection de validateurs personnalisables inspirés de validator.js, qu'aucune de ces bibliothèques Go n'implémente pleinement.
Voici comment validatorgo se démarque de go-playground/validator et govalidator :
Validation directe des chaînes : go-playground/validator est principalement conçu pour valider les champs de structure à l'aide de balises, ce qui est idéal pour gérer des données JSON ou basées sur une structure. Cependant, il n'est pas conçu pour valider des chaînes individuelles, ce que ValidatorGo fait de manière transparente, sans avoir besoin de balises struct ou de configuration supplémentaire.
Performance : go-playground/validator s'appuie sur la réflexion pour inspecter dynamiquement les balises struct. Bien que puissante, la réflexion peut entraîner une surcharge en termes de performances, en particulier lorsque des structures de données volumineuses ou complexes sont validées. validatorgo évite la réflexion, ce qui améliore les performances, la rendant plus rapide et plus efficace pour les scénarios où des validations à champ unique sont nécessaires.
J'ai créé validatorgo pour servir de dépendance à une autre bibliothèque Go appelée ginvalidator, qui valide les requêtes HTTP dans les applications Web Go. Inspiré par express-validator, la bibliothèque de validation populaire pour Node.js et Express, ValidatorGo comble une lacune dans l'écosystème Go pour une validation de chaîne efficace, personnalisable et simple. Étant donné que les autres bibliothèques étaient soit excessives, manquaient de fonctionnalités ou ne répondaient pas à mon cas d'utilisation, j'ai construit validatorgo pour offrir une solution pratique.
Utiliser aller chercher.
go get github.com/bube054/validatorgo
Importez ensuite le package dans votre propre code.
import ( "fmt" "github.com/bube054/validatorgo" )
Si vous n'êtes pas satisfait de l'utilisation du nom long du package validateurgo, vous pouvez le faire.
import ( "fmt" vgo "github.com/bube054/validatorgo" )
func main(){ id := "5f2a6c69e1d7a4e0077b4e6b" validId := vgo.IsMongoID(id) fmt.Println(validId) // true }
Below is a list of validators provided by the validatorgo package, which covers various string formats and types, making it versatile for multiple validation needs.
Validateur | Description |
---|---|
Contient | Vérifie si une chaîne contient une sous-chaîne spécifiée. |
Égal | Valide si une chaîne est exactement égale à une chaîne de comparaison. |
IsAbaRouting | Vérifie si la chaîne est un numéro de routage ABA valide (comptes bancaires américains). |
EstAprès | Valide si une chaîne de date est postérieure à une date spécifiée. |
EstAlpha | Garantit que la chaîne ne contient que des lettres (a-zA-Z). |
EstAlphanumérique | Valide si une chaîne contient uniquement des lettres et des chiffres. |
EstAscii | Vérifie si la chaîne contient uniquement des caractères ASCII. |
IsBase32 | Vérifie si la chaîne est une valeur codée en Base32 valide. |
IsBase64 | Valide si une chaîne est encodée Base64. |
EstAvant | S'assure que la date est antérieure à une date spécifiée. |
EstBooléen | Vérifie si la chaîne est « vraie » ou « fausse ». |
IsCreditCard | Valide si la chaîne est un numéro de carte de crédit valide. |
IsCurrency | Vérifie si la chaîne est un format monétaire valide. |
EstDate | Valide si une chaîne est une date valide. |
EstDécimal | Assure que la chaîne représente un nombre décimal valide. |
EstEmail | Vérifie si la chaîne est un format d'adresse e-mail valide. |
EstVide | Valide si une chaîne est vide. |
EstFQDN | Vérifie si la chaîne est un nom de domaine complet. |
EstFloat | Assure que la chaîne représente un nombre à virgule flottante. |
IsHexColor | Valide si une chaîne est une couleur hexadécimale valide (par exemple, #FFFFFF). |
IsIP | Vérifie si la chaîne est une adresse IP valide (IPv4 ou IPv6). |
EstISO8601 | Valide si la chaîne est au format de date ISO8601. |
EstLongueur | Vérifie si la longueur de la chaîne se situe dans une plage spécifiée. |
IsMimeType | Valide si la chaîne est un type MIME valide. |
EstMobilePhone | Vérifie si la chaîne est un numéro de téléphone mobile valide pour les paramètres régionaux spécifiés. |
EstMongoID | Valide si la chaîne est un ObjectID MongoDB valide. |
EstNumérique | Garantit que la chaîne ne contient que des caractères numériques. |
IsPostalCode | Vérifie si la chaîne est un code postal valide pour les paramètres régionaux spécifiés. |
EstRFC3339 | Valide si la chaîne est au format de date RFC3339. |
EstSlug | Vérifie si la chaîne est compatible avec les URL (uniquement les lettres, les chiffres et les tirets). |
IsStrongPassword | Garantit que la chaîne répond aux exigences courantes en matière de force des mots de passe. |
IsURL | Validates if the string is a URL. |
IsUUID | Checks if the string is a valid UUID (versions 1-5). |
IsUpperCase | Ensures the string is all uppercase. |
IsVAT | Checks if the string is a valid VAT number for specified countries. |
Matches | Validates if the string matches a specified regular expression. |
This table should cover most validators currently available in validatorgo. Make sure to refer to the package's documentation for more detailed usage of each validator.
⚠ Caution
When using a validator that requires an options struct (either a pointer or non-pointer), always provide values for all the struct fields explicitly.
Unlike in validator.js, where missing fields are automatically set to defaults, Go uses strict types.
This means missing values will default to false for booleans, 0 for number types, etc.
Not specifying all fields could lead to unexpected behavior if you're used to the JavaScript version.
Examples
// do this (using the default options specified in the docs) ok := validatorgo.IsFQDN("example", nil) // or this (explicitly setting all possible fields for the structs) ok := validatorgo.IsFQDN("example", &validatorgo.IsFQDNOpts{ RequireTld: false, AllowUnderscores: false, AllowTrailingDot: true, AllowNumericTld: false, IgnoreMaxLength: true }) // but rarely this(not explicitly setting all possible fields) ok := validatorgo.IsFQDN("example", &validatorgo.IsFQDNOpts{ RequireTld: false, })
import ( "fmt" "github.com/bube054/validatorgo/sanitizer" ) func main(){ str := sanitizer.Whitelist("Hello123 World!", "a-zA-Z") fmt.Println(str) // "HelloWorld" }
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. |
Pembersih ini sering digunakan untuk memastikan konsistensi dan keselamatan data dengan menanggalkan atau mengubah suai aksara yang mungkin tidak diingini atau berbahaya.
Pastikan anda merujuk kepada dokumentasi rasmi validatorgo untuk pelaksanaan dan contoh khusus setiap sanitizer.
validatorgo ialah pilihan ideal jika anda memerlukan:
Dengan validatorgo, anda mendapat alat yang direka khusus untuk pengesahan rentetan, menyokong kedua-dua keperluan aplikasi kendiri dan web dalam Go.
Atas ialah kandungan terperinci Mempermudahkan Pengesahan Rentetan dalam Go: Memperkenalkan validatorgo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!