Validating Expressions
What if you need to verify that text someone has entered is a correctly
formatted Canadian postal code? What if you need a user to enter a valid
e-mail address? Although you could write the necessary code to validate
these types of expressions (and many ASP developers did just that), ASP.NET
makes it easy to validate complex expressions.
Using the power of regular expressions, a widely accepted standard for
generalizing pattern matching, ASP.NET provides the
RegularExpressionValidator control. This control allows you to specify a
regular expression to match against text entered into a control. (Regular
expressions are templates for matching text梩he DOS wildcards, * and ?,
allow you to create very simple regular expression-like templates, although
real regular expressions are far more complex.)
Although coverage of creating your own regular expressions is beyond the
scope of this book (it's a huge topic, with reference books all its own),
Visual Studio .NET helps you create common regular expressions by providing
a list of the ones you're most likely to need, including U.S., French,
German, and Japanese phone numbers and postal codes, Internet e-mail
addresses, and Internet URLs.
As an example, the regular expression for U.S. ZIP codes looks like this
(remember that U.S. ZIP codes can be either five digits, such as 98765, or
five digits followed by a hyphen and four more digits, such as 98765-1234.
No other formats are allowed):
\d{5}(-\d{4})?
Here's an explanation of this example, taken apart bit by bit:
The \d{5} part of the expression matches against exactly five numeric
digits.
The (-\d{4})? part of the expression allows for the optional four digits.
The ()? part of the expression creates an optional group梕ither the whole
group appears or it doesn't. The parentheses group the expressions, and the
question mark indicates that the group is optional.
The hyphen (-) in this expression allows a hyphen as the first character in
the group.
The \d{4} part of the expression matches against four numeric digits.
To illustrate the use of this control, let's assume that on the sample
page, EmpMaint.aspx, you need to restrict data entry in the Home Phone
field to ensure valid U.S. phone numbers. You need to restrict data entry
in the Zip Code field as well. Follow these steps to add
RegularExpressionValidator controls to manage the input into these
controls, as shown in Figure 8.2:
Figure 8.2. Use the RegularExpressionValidator control to manage data input
for complex values.
Click to the right of the Zip Code text box, placing the insertion point at
that location.
In the Toolbox window, double-click the RegularExpressionValidator control,
placing a new instance on the page adjacent to the Zip Code text box.
Repeat the previous two steps for the Home Phone text box.
Set the properties for the two validation controls as shown in Table 8.5.
Table 8.5. Set These Properties for Your RegularExpressionValidator
Controls Control Property Value
RegularExpressionValidator1 ControlToValidate txtZipCode
Display Dynamic
ErrorMessage Enter a ZIP code in the format 99999-9999
ValidationExpression Click the … button and select U.S. Zip Code to
insert \d{5}(-\d{4})?)
RegularExpressionValidator2 ControlToValidate txtHomePhone
Display Dynamic
ErrorMessage Enter a phone number in the format (999) 999-9999
ValidationExpression Click the … button and select U.S. Phone Number to
insert ((\(\d{3}\)?)|(\d{3}-))?\d{3}-\d{4})
After setting all the properties, view the page in Browse mode again and
verify that entering invalid ZIP code and phone number values does indeed
display error messages as the page attempts to validate the data.