Мои (действительные?) Регулярные выражения не работают в гориллах / муксах
У меня есть это регулярное выражение в моем коде:
get.HandleFunc("/my/api/user/{userID:^([1-9][0-9]*)$}", app.Handle("user"))
Но когда я запускаю тесты, возвращаются только 404. Я также попробовал это:
get.HandleFunc("/my/api/user/{userID:\\A([1-9][0-9]*)\\z}", app.Handle("user"))
Он отлично работал с моим старым (но неверным) регулярным выражением:
get.HandleFunc("/my/api/user/{userID:[0-9]{1,}}", app.Handle("user"))
Интересно, что не так с моим новым регулярным выражением? Я пытался проверить это на некоторых сайтах, а также с помощью regexp
Пакет в Go, и он всегда работал. Насколько я знаю, gorilla/mux
использует Го regexp
пакет. Любая идея?
Я хочу обнаружить положительные целые числа, исключая ноль.
2 ответа
Якоря, скорее всего, проблема здесь, вы пытаетесь утверждать в начале / конце позиции строки.
Я бы просто попытался изменить старое (рабочее) регулярное выражение следующим образом:
get.HandleFunc("/my/api/user/{userID:[1-9][0-9]*}", app.Handle("user"))
Если вы хотите обнаружить положительные целые числа, исключая 0, вы должны использовать этот класс символов: [1-9]\d*
Это означает, что первая цифра должна быть между 1 и 9. Другие цифры (если они есть, посмотрите на *
) может быть любым целым числом, включая 0.