четверг, 28 мая 2020 г.

Особенности работы regexp в Golang

Почему регулярное выражение [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 (регулярное выражение валидно)


Читайте также:


Комментариев нет:

Отправить комментарий