Extension:Page Forms/Input types/Regexp
With the input type regexp you can fine-tune what values are allowed and what is blocked in your input fields. You can even string several filters together to have a cascade of checks, e.g. to give an error message specific to what violation occurred.
The special parameters for this input type are:
regexp
- a JavaScript regular expression, which the user input has to match. It must include slashes, at the beginning and end. See Regular Expressions for an introduction to writing a regular expression pattern in JavaScript, and Regex Pal for an interactive testing tool. Note that for the regexp, you cannot use the | character because it gets lost in the field definition. See "or char
", below.base type
- the actual input type to display. By default, it is "text", but it can be any other input type as well.inverse
- if set, the input must NOT match the regular expression in order to be valid.message=
- a custom error message to display, when the user input does not pass the validation. Defaults to Wrong format! (or its equivalent in the current locale).or char=
- the character that can be used in the regular expression instead of |. Defaults to !.base prefix=
- lets you set more than one regexp for this input; see below.
If you want to specify more than one regexp filter, you need to specify a prefix for each filter in the parameter base prefix of its predecessor. Sounds complicated? Have a look at the example below. You may, but do not need to specify a prefix for the final input type - each filter stage consumes only the parameters from the parameter set, that it understands, i.e. the specific parameters listed below.
Examples
[edit]A simple text input field accepting only letters, numbers and spaces. (This may be useful for fields from which an article's name is generated in the Page Forms one-step process.)
{{{field|foo|input type=regexp|regexp=/^[0-9A-Za-z ]+$/}}}
A text input field accepting only numbers and having no more than 5 digits. Certain numbers are forbidden. Each condition gets its own error message.
{{{field|foo|input type=regexp |regexp=/^\d*$/|message=Only numbers!|base type=regexp|base prefix=filter2 |filter2.regexp=/^.{0,5}$/|filter2.message=No more than 5 digits!|filter2.base type=regexp|filter2.base prefix=filter3 |filter3.regexp=/^666$/|filter3.message=Don't you dare!|filter3.inverse}}}