8.5 Regular Expressions

Often a simple value or range check is insufficient; you must check that the form of the data entered is correct. For example, you may need to ensure that a ZIP code is five digits, an email address is in the form name@place.com, a credit card matches the right format, and so forth.

A regular expression validator allows you to validate that a text field matches a regular expression. Regular expressions are a language for describing and manipulating text. For more complete coverage of this topic, please see Mastering Regular Mastering Regular Expressions, Second Edition, by Jeffrey Friedl (O'Reilly).

A regular expression consists of two types of characters: literals and metacharacters . A literal is just a character you wish to match in the target string. A metacharacter is a special symbol that acts as a command to the regular expression parser. The parser is the engine responsible for understanding the regular expression. Consider this regular expression:

^\d{5}$

This will match any string that has exactly five numerals. The initial metacharacter, ^, indicates the beginning of the string. The second metacharacter, \d, indicates a digit. The third metacharacter, {5}, indicates exactly 5 of the digits, and the final metacharacter, $, indicates the end of the string. Thus, this regular expression matches five digits between the beginning and end of the line, and nothing else.

A slightly more sophisticated algorithm might accept either a 5-digit ZIP code or a 9 digit (plus 4) ZIP code in the format of 12345-1234. Rather than using the \d metacharacter, you could simply designate the range of acceptable values:

ValidationExpression="[0-9]{5}|[0-9]{5}-[0-9]{4}"

You create a RegularExpressionValidator much as you did the previous validators. The only new attribute is ValidationExpression, which takes a valid regular expression within quotation marks. For example, the following code fragment defines a regular expression validator to ensure that the value entered into a text box is a five-digit numeric ZIP code:

<asp:RegularExpressionValidator   ControlToValidate="txtZip" Runat="server"  ValidationExpression="^\d{5}$"  display="Static">Please enter a valid 5 digit Zip code</asp:RegularExpressionValidator>

If the control pointed to by ControlToValidate has a string that matches the regular expression, validation succeeds. The complete .aspx source is shown in Example 8-6.

Example 8-6. Regular expression validator
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false"  Inherits="RegularExpressionValidation.WebForm1" %> <HTML>   <HEAD> <meta content="Internet Explorer 5.0" name=vs_targetSchema> <meta content="Microsoft Visual Studio 7.0" name=GENERATOR> <meta content=C# name=CODE_LANGUAGE>   </HEAD> <body MS_POSITIONING="GridLayout"> <form method=post runat="server">     <table>       <tr>          <td colspan="2">             <h5>Please enter your Zip Code</h5>                   </td>       </tr>       <tr>          <td>             <asp:TextBox width="60"  runat="server" />          </td>          <td>             <asp:RegularExpressionValidator               ControlToValidate="txtZip" Runat="server"              ValidationExpression="^\d{5}$"              display="Static">Please enter a valid 5 digit Zip               code</asp:RegularExpressionValidator>          </td>        </tr>        <tr>          <td>             <asp:Button  Text="Validate"                Runat="server"></asp:Button>          </td>          <td>             <asp:Label  Runat="server" Text=""/>          </td>        </tr>     </table></FORM>   </body> </HTML>

When you use a RegularExpressionValidator control with client-side validation, the regular expressions are matched using JScript. This may differ in small details from the regular expression checking done on the server.



Programming ASP. NET
Programming ASP.NET 3.5
ISBN: 0596529562
EAN: 2147483647
Year: 2003
Pages: 156

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net