要判断一个字符串是否为合法的 MD5 值,需满足以下条件:
- 长度为 32 个字符:MD5 哈希值的固定长度为 32。
- 仅包含十六进制字符(0-9, a-f, A-F)。
以下是两种实现方法:
方法一:正则表达式(推荐)
package main
import (
"regexp"
)
var md5Regex = regexp.MustCompile(`^[a-fA-F0-9]{32}$`)
func IsMD5(s string) bool {
return md5Regex.MatchString(s)
}
优点:
- 简洁高效:正则表达式预先编译,匹配速度快。
- 可读性强:代码直观易懂。
方法二:逐字符检查
func IsMD5(s string) bool {
if len(s) != 32 {
return false
}
for _, c := range s {
if !(c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F') {
return false
}
}
return true
}
优点:
- 无正则依赖:避免正则解析开销。
- 更细粒度控制:适合对性能要求极高的场景。
使用示例
func main() {
fmt.Println(IsMD5("d41d8cd98f00b204e9800998ecf8427e")) // true
fmt.Println(IsMD5("not_an_md5")) // false
}
选择建议:通常情况下推荐使用正则表达式实现,它在代码简洁性和可维护性上更优。