diff --git a/validator/validator.go b/validator/validator.go index 02a3e4e..dd7b68e 100644 --- a/validator/validator.go +++ b/validator/validator.go @@ -21,6 +21,7 @@ import ( var ( alphaMatcher *regexp.Regexp = regexp.MustCompile(`^[a-zA-Z]+$`) letterRegexMatcher *regexp.Regexp = regexp.MustCompile(`[a-zA-Z]`) + alphaNumericMatcher *regexp.Regexp = regexp.MustCompile(`^[a-zA-Z0-9-]+$`) numberRegexMatcher *regexp.Regexp = regexp.MustCompile(`\d`) intStrMatcher *regexp.Regexp = regexp.MustCompile(`^[\+-]?\d+$`) urlMatcher *regexp.Regexp = regexp.MustCompile(`^((ftp|http|https?):\/\/)?(\S+(:\S*)?@)?((([1-9]\d?|1\d\d|2[01]\d|22[0-3])(\.(1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.([0-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(([a-zA-Z0-9]+([-\.][a-zA-Z0-9]+)*)|((www\.)?))?(([a-z\x{00a1}-\x{ffff}0-9]+-?-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.([a-z\x{00a1}-\x{ffff}]{2,}))?))(:(\d{1,5}))?((\/|\?|#)[^\s]*)?$`) @@ -181,6 +182,12 @@ func IsJSON(str string) bool { return json.Unmarshal([]byte(str), &js) == nil } +// IsAlphaNumericStr check if the string is alphanumeric. +// Play: todo +func IsAlphaNumeric(s string) bool { + return alphaNumericMatcher.MatchString(s) +} + // IsNumberStr check if the string can convert to a number. // Play: https://go.dev/play/p/LzaKocSV79u func IsNumberStr(s string) bool { diff --git a/validator/validator_test.go b/validator/validator_test.go index 99e4fb8..cb2c000 100644 --- a/validator/validator_test.go +++ b/validator/validator_test.go @@ -659,3 +659,21 @@ func TestIsChinaUnionPay(t *testing.T) { assert.Equal(true, IsChinaUnionPay("6250941006528599")) assert.Equal(false, IsChinaUnionPay("3782822463100007")) } + +func TestIsAlphaNumeric(t *testing.T) { + t.Parallel() + + assert := internal.NewAssert(t, "TestIsAlphaNumeric") + + assert.Equal(true, IsAlphaNumeric("ABC")) + assert.Equal(true, IsAlphaNumeric("abc")) + assert.Equal(true, IsAlphaNumeric("aBC")) + assert.Equal(true, IsAlphaNumeric("1BC")) + assert.Equal(true, IsAlphaNumeric("1bc")) + assert.Equal(true, IsAlphaNumeric("123")) + + assert.Equal(false, IsAlphaNumeric("")) + assert.Equal(false, IsAlphaNumeric("你好")) + assert.Equal(false, IsAlphaNumeric("A&")) + assert.Equal(false, IsAlphaNumeric("&@#$%^&*")) +}