Регулярное выражение для проверки длины - PullRequest
0 голосов
/ 07 марта 2020

Я пишу функцию для выполнения простого сопоставления с шаблоном на основе регулярных выражений в 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

1 Ответ

1 голос
/ 07 марта 2020

Не используйте регулярные выражения для этого. Просто проверьте длину строки как обычно. Регулярные выражения являются медленными и дорогостоящими в вычислительном отношении, поэтому их следует использовать только тогда, когда они действительно необходимы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...