A pattern
argument can be provided to a form field as described here
Example (regex from here)
<%= f.text_field :username, pattern: "([A-Za-z0-9\-\_]+)" %>
When the regex is not adhered to, a message is displayed. E.g.:
How can that message be customised?
The pattern
attribute is actually a HTML spec, not a Rails thing. You can use the title
attribute to give users a hint on to what format is expected.
<%= f.text_field :username, pattern: "([A-Za-z0-9\-\_]+)",
title: "A username can only contain letters, numbers, hyphens and underscores" %>
Find more information here: https://html.spec.whatwg.org/multipage/input.html#the-pattern-attribute