Почему регулярное выражение [0-9]*, которое должно соответствовать строке с нулем или более цифрами, соответствует строке с символами в ней?
matched, err := regexp.MatchString(`[0-9]*`, "12three45")
fmt.Println(matched) // true
fmt.Println(err) // nil (регулярное выражение валидно)
Ответ
Функция regexp.MatchString (как и большинство функций в пакете regexp) выполняет сопоставление подстрок.
Чтобы проверить, соответствует ли полная строка [0-9]*, закрепите начало и конец регулярного выражения:
- каретка ^ соответствует началу текста или строки,
- знак доллара $ соответствует концу текста.
matched, err := regexp.MatchString(`^[0-9]*$`, "12three45")
fmt.Println(matched) // false
fmt.Println(err) // nil (регулярное выражение валидно)
Читайте также:
- Regexp (регулярные выражения) в Golang
- Три способа разделить строку на срез в Golang
- Срезы в Golang: внутреннее устройство и использование
Комментариев нет:
Отправить комментарий