Super simple string validation for Go, inspired by node-validator.
go get github.com/bcarrell/verify
package main
import (
"fmt"
"github.com/bcarrell/verify"
)
func main() {
// basic usage -- chaining is encouraged, and `verify` is meant to have
// an API approaching plain english (ie. DoesntContain(..) instead of
// NotContain(..))
scientist := verify.Verify("Gaius Baltar").
MinLength(8).
MaxLength(200).
Contains("Gaius").
Contains("Baltar").
DoesntContain("cylon")
// You can inspect each verification result independently.
// Each method stores a string key of []bool values within a Results map.
// The key is identical to its function name.
// Each []bool item result is in the order of the functions called.
fmt.Println(scientist.Results["MinLength"]) // [true]
fmt.Println(scientist.Results["MaxLength"]) // [true]
fmt.Println(scientist.Results["Contains"]) // [true true]
fmt.Println(scientist.Results["DoesntContain"]) // [true]
// or, if you don't care about individual results and just want to know
// if everything passed, tack on an .IsVerified() method call at the end
isScientistVerified := scientist.IsVerified()
fmt.Println(isScientistVerified) // true
}
Initialize by calling verify.Verify(<str>)
and then use any of the following.
Where it makes sense, all methods will have an inverse method, usually prefixed
with Isnt
or Doesnt
, depending on grammar.
.Email()
.IsntEmail()
.Url()
.IsntUrl()
.CreditCard()
.IsntCreditCard()
.Length(<int>)
.IsntLength(<int>)
.Int()
.IsntInt()
.Is(<string>)
.Isnt(<string>)
.IsEmpty()
.IsntEmpty()
.Contains(<string>)
.DoesntContain(<string>)
.IsIn(<[]string>)
.IsntIn(<[]string>)
.MinLength(<int>) <-- inclusive
.MaxLength(<int>) <-- inclusive
End your calls with .IsVerified()
to return a boolean: true if all
verifications returned true, false if any returned false.
I welcome any and all contributions. If you'd like to request a verification method, be sure to create an Issue describing it. If you'd like to contribute a verification method, please include an inverse method and corresponding test cases with your addition. Thanks!