manifoldco/promptui

Prompt Validation: regex matching causes multiple rerenders on input

jenil777007 opened this issue · 3 comments

Issue reproduction:

emailPrompt := promptui.Prompt{
  Label: "Email",
  Validate: func(input string) error {
	  match, err := regexp.MatchString("([a-z]+)@email.com", input)
	  if err != nil {
		  log.Fatal(err)
		  os.Exit(1)
	  }

          if !match {
		return errors.New("Please provide a valid email. i.e. abc@email.com")
	}
  },
}

Issue:

Screenshot 2022-06-24 at 2 41 24 PM

hi @jenil777007 did you find a solution to this issue? Something similar happens when the input exceeds the length of the terminal and starts a new line.

config Templates in promptui.Prompt to control output content format,more detail please refer template

Try this:

emailPrompt := promptui.Prompt{
  Label: "Email",
  Validate: func(input string) error {
          regex := regex.MustCompile(`([a-z]+)@email.com`)
          if !regex.MatchString(input) {
                  return errors.New("Wrong mail format")
          }
          return nil
  },
}