Setting Regular Expressions

Overview

A regular expression is a pattern of text that consists of ordinary characters (for example, letters A through Z) and special characters, known as metacharacters. The pattern contains one or more strings to match when searching text. Patterns consist of characters, character classes, and quantifiers.

Copia allows you to set regular expressions to validate data entry in several places, including the Demographics page. System administrators may establish patterns for many of the fields on the Demographics page from the Locations and System Defaults administration pages. When these patterns exist, Copia verifies what users enter to see if it matches the established patterns. For instance, you may limit a phone number to 10 digits with no hyphens, or you may allow only 5- or 9-digit zip codes.


Characters for Expressions

Use the characters below when you are creating patterns for data entry. To match these special characters, you must first precede them with a backslash character (\). The following table lists special characters and their meanings:

Character Definitions and Examples
Character Definition How it affects the text entry in Copia Pattern Sample Matching Entries
\ Preceding one of the below, it makes it a literal instead of a special character. Preceding a special matching character, see below.   a\sc a c
^ Matches the position at the beginning of the input string. Requires the characters that follow this symbol at the beginning of the text entry. ^abc abc, abcdefg, abc123, ...
$ Matches the position at the end of the input string. Requires the characters that follow this symbol at the end of the text entry. abc$ abc, endsinabc, 123abc, ...
. Any character.   a.c abc, aac, acc, adc, aec, ...
| Alternation.   bill|ted ted, bill
{...} Explicit quantifier notation.   ab{2}c abbc
[...] Explicit set of characters to match.   a[bB]c abc, aBc
(...) Logical grouping of part of an expression.   (abc){2} abcabc
* 0 or more of previous expression. Matches the preceding character or subexpression zero or more times. For example, zo* matches "z" and "zoo". * is equivalent to {0,}. ab*c ac, abc, abbc, abbbc, ...
+ 1 or more of previous expression. Matches the preceding character or subexpression one or more times. For example, 'zo+' matches "zo" and "zoo", but not "z". The + is equivalent to {1,}. ab+c abc, abbc, abbbc, ...
? 0 or 1 of previous expression; also forces minimal matching when an expression might match several strings within a search string.

Matches the preceding character or subexpression zero or one time. For example, "do(es)?" matches the "do" in "do" or "does". The ? is equivalent to {0,1}.

When this character immediately follows any of the other quantifiers (*, +, ?, {n}, {n,}, {n,m}), the matching pattern is non-greedy. A non-greedy pattern matches as little of the searched string as possible; whereas, the default greedy pattern matches as much of the searched string as possible. For example, in the string "oooo", 'o+?' matches a single "o", while 'o+' matches all 'o's.

ab?c ac, abc
- To express the matching characters using a range instead of the characters themselves, use the hyphen (-) character to separate the beginning and ending characters in the range. When a range is specified in this manner, both the starting and ending values are included in the range.

[\-]

Put the hyphen character at the beginning or the end of the bracketed list. The following expressions match all lowercase letters and the hyphen: [-a-z] [a-z-]

A character class is a set of characters that will find a match if any one of the characters included in the set matches. The following table summarizes character matching syntax.

Character Classes
Char Class How the data entered must match in order to be valid
. Matches any character.
[aeiou]A character set. Matches any one of the enclosed characters. For example, '[abc]' matches the 'a' in "plain".
[^aeiou]A negative character set. Matches any character not enclosed. For example, '[^abc]' matches the 'p' in "plain".
[0-9a-fA-F] A range of characters. Matches any character in the specified range. For example, '[a-z]' matches any lowercase alphabetic character in the range 'a' through 'z'. Use a hyphen (–) to specify a continuous character range.
[^a-z] A negative range characters. Matches any character not in the specified range. For example, '[^a-z]' matches any character not in the range 'a' through 'z'.
\w Matches any word character including underscore. Equivalent to [A-Za-z0-9_].
\W Matches any non-word character. Equivalent to [^A-Za-z0-9_].
\s Matches any white-space character, including space, tab, form-feed, and so on.
\S Matches any non-white-space character, including all alphanumeric characters.
\d Matches any digit character. Equivalent to [0-9].
\D Matches any non-digit character. Equivalent to [^0-9].

x|y

Matches either x or y. For example, 'z|food' matches "z" or "food" and '(z|f)ood' matches "zood" or "food."

These quantifiers let you specify how many times a given component of a regular expression must occur for a match to be true.

Quantifiers
Character Description

*

Matches the preceding character or subexpression zero or more times. For example, zo* matches z and zoo. Equivalent to {0,}.

+

Matches the preceding character or subexpression one or more times. For example, zo+ matches zo and zoo, but not z. Equivalent to {1,}.

?

Matches the preceding character or subexpression zero or one time. For example, do(es)? matches the do in do or does. Equivalent to {0,1}.

{n}

n is a non-negative integer. Matches exactly n times. For example, o{2} does not match the o in Bob but matches the two o's in food.

{n,}

n is a non-negative integer. Matches at least n times. For example, o{2,} does not match the o in Bob and matches all the o's in foooood. o{1,} is equivalent to o+. o{0,} is equivalent to o*.

{n,m}

m and n are non-negative integers, where n <= m. Matches at least n and at most m times. For example, o{1,3} matches the first three o's in fooooood. o{0,1} is equivalent to o?. Note that you cannot put a space between the comma and the numbers.


Examples for Fields in Copia

These are example patterns for the demographic fields in Copia. Edit these patterns as necessary to meet your facility's needs.

Each sample pattern uses the character codes described above. You enter your patterns in the Pattern fields on the Locations and System Defaults administration pages.

Field Examples
Field Name Sample Pattern Sample Description
First Name [A-Za-z][\sA-Za-z]{0,23} Enter uppercase or lowercase alphabetical characters for the First Name, up to a maximum of 23.
Middle Name [A-Z] Enter a single, uppercase alphabetical character for the Middle Name.
Last Name [A-Za-z][\sA-Za-z]{0,24} Enter uppercase or lowercase alphabetical characters for the Last Name, up to a maximum of 24.
SSN [0-9][0-9]{9} Enter numeric characters for the Social Security Number, up to a maximum of 9.
MRN [A-Za-z0-9][\-\sA-Za-z0-9]{0,10} Enter uppercase or lowercase alphabetical characters or numeric characters for the Medical Record Number, up to a maximum of 10.
Phone 1 or 2 [1-9][0-9]{10} Enter a 10-digit phone number with no hyphens.
Address 1 or 2 [A-Za-z0-9][\sA-Za-z0-9]{0,15} Enter uppercase or lowercase alphabetical characters or numeric characters for the Address, up to a maximum of 15.
City [A-Za-z0-9][\sA-Za-z0-9]{0,20} Enter uppercase or lowercase alphabetical characters or numeric characters for the City, up to a maximum of 20.
Zip [1-9][0-9]{5,9} Enter a 5- or 9-digit number.
State [A-Z]{2} Enter the 2-letter state abbreviation in uppercase.
Country U.A Enter the country, beginning with the "U" character and ending with the "A" character.

 


 © 2018 Orchard Software Corporation