A validation function, suitable for use with InputValidator$add_rule(), that checks whether input values match the specified regular expression.

  ignore.case = FALSE,
  perl = FALSE,
  fixed = FALSE,
  useBytes = FALSE,
  invert = FALSE



Character string containing a regular expression (or character string if fixed = TRUE) to be tested against. If a character vector of length 2 or more is supplied, the first element is used with a warning.


The validation error message to use if a value fails to match the pattern.

ignore.case, perl, fixed, useBytes, invert

Options passed through to base::grepl().


A function suitable for use as an InputValidator$add_rule() rule.

See also

The sv_email() and sv_url() functions, which are specialized regex-based functions for validating email addresses and URLs.

Other rule functions: compose_rules(), sv_between(), sv_email(), sv_equal(), sv_gte(), sv_gt(), sv_in_set(), sv_integer(), sv_lte(), sv_lt(), sv_not_equal(), sv_numeric(), sv_optional(), sv_required(), sv_url()


## Only run examples in interactive R sessions
if (interactive()) {


ui <- fluidPage(
  textInput("lookup_id", "Lookup ID")

server <- function(input, output, session) {
  # Validation rules are set in the server, start by
  # making a new instance of an `InputValidator()`
  iv <- InputValidator$new()

  # Basic usage: `sv_regex()` requires both a regex
  # pattern and message to display if the validation
  # of `input$lookup_id` fails
    sv_regex("^[a-zA-Z0-9]*$", "Only alphanumeric characters allowed")

  # Finally, `enable()` the validation rules

shinyApp(ui, server)


# As an alternative to the above example, the
# following snippet can serve to replace the
# `iv$add_rule(...)` statement

# If you're more comfortable with wildcards
# (i.e., globbing) than with regular expressions,
# use `glob2rx()` in `pattern`

# iv$add_rule(
#   "lookup_id",
#   sv_regex(
#     pattern = glob2rx("*.png"),
#     message = "A filename ending in 'png' was expected",
#     ignore.case = TRUE
#   )
# )