Go语言的正则验证常用方法笔记

package common

import (
	"errors"
	"fmt"
	"regexp"
	"unicode/utf8"
)

/*
[:graph:]      图形字符 (相当于 [!-~])
[:word:]       单词字符(相当于 [0-9A-Za-z_])
[:alnum:]      字母数字 (相当于 [0-9A-Za-z])
[:alpha:]      字母 (相当于 [A-Za-z])
[:digit:]      数字 (相当于 [0-9])
[:lower:]      小写字母 (相当于 [a-z])
[:upper:]      大写字母(相当于 [A-Z])
[:blank:]      空白占位符 (相当于 [\t ])
[:print:]      可打印字符 (相当于 [ -~] 相当于 [ [:graph:]])
[:punct:]      标点符号 (相当于 [!-/:-@[-反引号{-~])
[:space:]      空白字符(相当于 [\t\n\v\f\r ])
[:ascii:]      ASCII 字符集 (相当于 [\x00-\x7F])
[:cntrl:]      控制字符 (相当于 [\x00-\x1F\x7F])
*/
/*
密码:中英文、数字、符号;至少同时包含字母和数字  6~20字符
文件名:只能包含中英文数字和下划线 <=24字符
昵称:中英文数字  <=24字符
姓名:中英文  <=24字符
参数:中英文  <=12字符
len(s)						返回的是字节数
utf8.RuneCountInString(s)	返回字符数
*/

//字符串验证:中英文数字
func ValidateString(str string, len int) (code int) {
	nl := regexp.MustCompile("[^\u4e00-\u9fa50-9A-Za-z]+") //是否包含之外的字符,true包含 false不包含
	if nl.MatchString(str) {
		return -1
	}
	sLen := utf8.RuneCountInString(str)
	if sLen > len || sLen < 1 {
		return -1
	}

	return
}

//密码:中英文、数字、符号;至少同时包含字母和数字  6~20字符
func ValidatePassword(str string, len ...int) (err error) {
	nl := regexp.MustCompile("[^0-9A-Za-z!-~]+") //是否包含之外的字符,true包含 false不包含
	if nl.MatchString(str) {
		err = errors.New("Contains characters other than numeric letters symbol. ")
	}

	l := regexp.MustCompile("[a-zA-Z]+") //必须包含字母 true包含
	if !l.MatchString(str) {
		err = errors.New("Must contain a letters. ")
	}

	n := regexp.MustCompile("[0-9]+") //必须包含数字  true包含
	if !n.MatchString(str) {
		err = errors.New("Must contain a number. ")
	}
	sLen := utf8.RuneCountInString(str)
	if sLen > 20 {
		err = errors.New("Length greater than 20. ")
	}
	if sLen < 6 {
		err = errors.New("Length less than 6. ")
	}
	return
}

//文件名:只能包含中英文数字和下划线 <=24字符
func ValidateFileName(str string, len ...int) (err error) {
	nl := regexp.MustCompile("[^\u4e00-\u9fa50-9A-Za-z_]+") //是否之外的字符,true包含 false不包含
	if nl.MatchString(str) {
		err = errors.New("Contains characters other than Hanzi numeric letters _. ")
	}
	sLen := utf8.RuneCountInString(str)
	if sLen > 24 {
		err = errors.New("Length greater than 24. ")
	}
	if sLen < 1 {
		err = errors.New("Length less than 1. ")
	}
	return
}

//姓名:中英文  <=24字符
func ValidateName(str string, len ...int) (err error) {
	cl := regexp.MustCompile("[^\u4e00-\u9fa5A-Za-z]+") //是否包含之外的字符,true包含 false不包含
	if cl.MatchString(str) {
		err = errors.New("Contains characters other than Hanzi letters. ")
	}
	sLen := utf8.RuneCountInString(str)
	if sLen > 24 {
		err = errors.New("Length greater than 24. ")
	}
	if sLen < 1 {
		err = errors.New("Length less than 1. ")
	}
	return
}

//昵称:中英文数字  <=24字符
func ValidateNickname(str string, len int) (err error) {
	nl := regexp.MustCompile("[^\u4e00-\u9fa50-9A-Za-z]+") //是否包含之外的字符,true包含 false不包含
	if nl.MatchString(str) {
		err = errors.New("Contains characters other than Hanzi letters num. ")
	}
	sLen := utf8.RuneCountInString(str)
	if sLen > len {
		err = errors.New("Length greater than 24. ")
	}
	if sLen < 1 {
		err = errors.New("Length less than 1. ")
	}
	return
}

//参数:中英文  <=12字符
func ValidateParam(str string, len int) (code int) {
	zl := regexp.MustCompile("[^\u4e00-\u9fa5A-Za-z]+") //是否包含之外的字符,true包含 false不包含
	if zl.MatchString(str) {
		//code = e.ERROR_PARAM_NAME
	}
	sLen := utf8.RuneCountInString(str)
	if sLen > len || sLen < 1 {
		fmt.Println("sLen:", sLen)
		//code = e.ERROR_PARAM_NAMELEN
	}

	return
}

//参数:英文数字
func ValidateLetter(str string) (err error) {
	zl := regexp.MustCompile("[^0-9A-Za-z]+") //是否包含之外的字符,true包含 false不包含
	if zl.MatchString(str) {
		err = errors.New("Contains characters other than letters num. ")
	}
	return
}

//参数:英文数字
func ValidateNum(str string) (err error) {
	zl := regexp.MustCompile("[^0-9]+") //是否包含之外的字符,true包含 false不包含
	if zl.MatchString(str) {
		err = errors.New("Contains characters other than num. ")
	}
	return
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值