Я пишу функцию для выполнения простого сопоставления с шаблоном на основе регулярных выражений в Go, и мне необходимо дополнительно проверить длину строки, которую я хотел бы сопоставить с шаблоном. Вот требования к моему регулярному выражению:
- Первый символ должен быть алфавитом c или цифрой c
- Последний символ должен быть алфавитом c или цифрой c
- Любые символы между первым и последним должны быть в алфавитном порядке c, цифрой c или любым из '.', '_' И '-'
- Минимальная длина один символ
- Максимальная длина составляет 255 символов
func validateUserEnvironmentName(name string) bool {
var validEnvName = regexp.MustCompile(`^[a-zA-Z0-9]+[a-zA-Z0-9_.\-]*[a-zA-Z0-9]{1,255}$`)
return validEnvName.MatchString(name)
}
Регулярное выражение может проверять каждый случай использования, кроме случая, когда ввод превышает 255 символов. Предоставляет ли регулярное выражение в Go механизм для проверки длины всего шаблона, или я должен изменить регулярное выражение, чтобы приспособить этот конкретный вариант использования?
Вот ссылка Go Playground для проверки - https://play.golang.org/p/GmGYh8vtx34