1package validator
2
3import "regexp"
4
5const (
6	alphaRegexString          = "^[a-zA-Z]+$"
7	alphaNumericRegexString   = "^[a-zA-Z0-9]+$"
8	numericRegexString        = "^[-+]?[0-9]+(?:\\.[0-9]+)?$"
9	numberRegexString         = "^[0-9]+$"
10	hexadecimalRegexString    = "^[0-9a-fA-F]+$"
11	hexcolorRegexString       = "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
12	rgbRegexString            = "^rgb\\(\\s*(?:(?:0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(?:0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(?:0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])|(?:0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])%\\s*,\\s*(?:0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])%\\s*,\\s*(?:0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])%)\\s*\\)$"
13	rgbaRegexString           = "^rgba\\(\\s*(?:(?:0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(?:0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(?:0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])|(?:0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])%\\s*,\\s*(?:0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])%\\s*,\\s*(?:0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])%)\\s*,\\s*(?:(?:0.[1-9]*)|[01])\\s*\\)$"
14	hslRegexString            = "^hsl\\(\\s*(?:0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d|360)\\s*,\\s*(?:(?:0|[1-9]\\d?|100)%)\\s*,\\s*(?:(?:0|[1-9]\\d?|100)%)\\s*\\)$"
15	hslaRegexString           = "^hsla\\(\\s*(?:0|[1-9]\\d?|[12]\\d\\d|3[0-5]\\d|360)\\s*,\\s*(?:(?:0|[1-9]\\d?|100)%)\\s*,\\s*(?:(?:0|[1-9]\\d?|100)%)\\s*,\\s*(?:(?:0.[1-9]*)|[01])\\s*\\)$"
16	emailRegexString          = "^(?:(?:(?:(?:[a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+(?:\\.([a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+)*)|(?:(?:\\x22)(?:(?:(?:(?:\\x20|\\x09)*(?:\\x0d\\x0a))?(?:\\x20|\\x09)+)?(?:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(?:\\(?:[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}]))))*(?:(?:(?:\\x20|\\x09)*(?:\\x0d\\x0a))?(\\x20|\\x09)+)?(?:\\x22)))@(?:(?:(?:[a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(?:(?:[a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])(?:[a-zA-Z]|\\d|-|\\.|_|~|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])*(?:[a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])))\\.)+(?:(?:[a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(?:(?:[a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])(?:[a-zA-Z]|\\d|-|\\.|_|~|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])*(?:[a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])))\\.?$"
17	base64RegexString         = "^(?:[A-Za-z0-9+\\/]{4})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=|[A-Za-z0-9+\\/]{4})$"
18	iSBN10RegexString         = "^(?:[0-9]{9}X|[0-9]{10})$"
19	iSBN13RegexString         = "^(?:(?:97(?:8|9))[0-9]{10})$"
20	uUID3RegexString          = "^[0-9a-f]{8}-[0-9a-f]{4}-3[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$"
21	uUID4RegexString          = "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
22	uUID5RegexString          = "^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
23	uUIDRegexString           = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
24	aSCIIRegexString          = "^[\x00-\x7F]*$"
25	printableASCIIRegexString = "^[\x20-\x7E]*$"
26	multibyteRegexString      = "[^\x00-\x7F]"
27	dataURIRegexString        = "^data:.+\\/(.+);base64$"
28	latitudeRegexString       = "^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?)$"
29	longitudeRegexString      = "^[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$"
30	sSNRegexString            = `^\d{3}[- ]?\d{2}[- ]?\d{4}$`
31)
32
33var (
34	alphaRegex          = regexp.MustCompile(alphaRegexString)
35	alphaNumericRegex   = regexp.MustCompile(alphaNumericRegexString)
36	numericRegex        = regexp.MustCompile(numericRegexString)
37	numberRegex         = regexp.MustCompile(numberRegexString)
38	hexadecimalRegex    = regexp.MustCompile(hexadecimalRegexString)
39	hexcolorRegex       = regexp.MustCompile(hexcolorRegexString)
40	rgbRegex            = regexp.MustCompile(rgbRegexString)
41	rgbaRegex           = regexp.MustCompile(rgbaRegexString)
42	hslRegex            = regexp.MustCompile(hslRegexString)
43	hslaRegex           = regexp.MustCompile(hslaRegexString)
44	emailRegex          = regexp.MustCompile(emailRegexString)
45	base64Regex         = regexp.MustCompile(base64RegexString)
46	iSBN10Regex         = regexp.MustCompile(iSBN10RegexString)
47	iSBN13Regex         = regexp.MustCompile(iSBN13RegexString)
48	uUID3Regex          = regexp.MustCompile(uUID3RegexString)
49	uUID4Regex          = regexp.MustCompile(uUID4RegexString)
50	uUID5Regex          = regexp.MustCompile(uUID5RegexString)
51	uUIDRegex           = regexp.MustCompile(uUIDRegexString)
52	aSCIIRegex          = regexp.MustCompile(aSCIIRegexString)
53	printableASCIIRegex = regexp.MustCompile(printableASCIIRegexString)
54	multibyteRegex      = regexp.MustCompile(multibyteRegexString)
55	dataURIRegex        = regexp.MustCompile(dataURIRegexString)
56	latitudeRegex       = regexp.MustCompile(latitudeRegexString)
57	longitudeRegex      = regexp.MustCompile(longitudeRegexString)
58	sSNRegex            = regexp.MustCompile(sSNRegexString)
59)
60