Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Current »

Regular expressions are enclosed in matching pound sign (#) characters with a prepended re: re#...#. KRL regular expressions follow the JavaScript standard, which closely follows the conventions for Perl regular expressions. The following modifiers may appear in any order after the closing character:

  • i. The i modifier makes the regular expression case insensitive.
  • g. The g modifier applies the regular expression globally.

For example, the following code replaces the first instance of foo in p with bar:

p.replace(re#foo#, "bar")

In contrast, the following code replaces all instances of foo in p with bar:

p.replace(re#foo#g, "bar")

Special characters

Like strings, the only special characters are the terminator (#) and the backslash (/). To use pound signs or backslashes inside regular expressions, escape them with backslashes:

re#\#\\# // '#' followed by '\'


A newline (\n) requires a line break:

re#
#

Other characters can be inserted literally (some text editors are better at this than others), or consider using chr() and converting the string to a regular expression.

Rationale

KRL uses the hash character to delimit regular expressions instead of the more common (and acceptable) slash (/) because the slash is a frequently used character in URL paths. This removes the need to quote the slash with backslashes: re/\/archives\/\d{4}\//. Using an alternate delimiter makes the regex more readable and thus communicates its meaning more clearly.

  • No labels