Я уже некоторое время пытаюсь преобразовать соглашение об имени пользователя Github с помощью регулярных выражений в Go, и я не смог этого сделать. Также длина имени пользователя не должна превышать более 39 символов .
Ниже приведено соглашение об имени пользователя от Github
Имя пользователя может содержать только буквенно-цифровые символы или одиночные дефисыи не может начинаться или заканчиваться дефисом.
и для длины
Имя пользователя слишком длинное (максимум 39 символов).
Вот код, который я написал. Вы можете проверить здесь, на Игровая площадка Go
package main
import (
"fmt"
"regexp"
)
func main() {
usernameConvention := "^[a-zA-Z0-9]*[-]?[a-zA-Z0-9]*$"
if re, _ := regexp.Compile(usernameConvention); !re.MatchString("abc-abc") {
fmt.Println("false")
} else {
fmt.Println("true")
}
}
В настоящее время я могу достичь следующих целей:
a-b // true - Working!
-ab // false - Working!
ab- // false - Working!
0-0 // true - Working!
Но проблема в том, что я не могуНе могу найти шаблон регулярного выражения, который должен работать для следующего сценария:
a-b-c // false - Should be true
Также он должен быть в пределах 39 символов, которые я нашел, что мы могли бы использовать {1,38}
, но я не знаю, гдеименно я должен добавить это в шаблоне регулярных выражений.