|
- package str
-
- import (
- "regexp"
- "strings"
- )
-
- var IPReg, _ = regexp.Compile(`^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$`)
- var MailReg, _ = regexp.Compile(`\w[-._\w]*@\w[-._\w]*\.\w+`)
-
- func IsMatch(s, pattern string) bool {
- match, err := regexp.Match(pattern, []byte(s))
- if err != nil {
- return false
- }
-
- return match
- }
-
- func IsIdentifier(s string, pattern ...string) bool {
- defpattern := "^[a-zA-Z0-9\\-\\_\\.]+$"
- if len(pattern) > 0 {
- defpattern = pattern[0]
- }
-
- return IsMatch(s, defpattern)
- }
-
- func IsMail(s string) bool {
- return MailReg.MatchString(s)
- }
-
- func IsPhone(s string) bool {
- if strings.HasPrefix(s, "+") {
- return IsMatch(s[1:], `^\d{13}$`)
- } else {
- return IsMatch(s, `^\d{11}$`)
- }
- }
-
- func IsIP(s string) bool {
- return IPReg.MatchString(s)
- }
-
- func Dangerous(s string) bool {
- if strings.Contains(s, "<") {
- return true
- }
-
- if strings.Contains(s, ">") {
- return true
- }
-
- if strings.Contains(s, "&") {
- return true
- }
-
- if strings.Contains(s, "'") {
- return true
- }
-
- if strings.Contains(s, "\"") {
- return true
- }
-
- if strings.Contains(s, "file://") {
- return true
- }
-
- if strings.Contains(s, "../") {
- return true
- }
-
- return false
- }
|