Developing ColdFusion Applications
|
|
Using Regular Expressions in Functions
|
Basic Regular Expression Rules
This section describes the basic rules for creating regular expressions (REs), including single-character regular expressions.
The following are the basic rules for regular expressions:
- Special characters are:
+ * ? . [ ^ $ ( ) { | \
- Any character that is not a special character matches itself.
- A backslash (\) followed by any special character matches the literal character itself, that is, the backslash escapes the special character.
- A period (.) matches any character, including newline. To match any character except a newline, use [^#chr(13)##chr(10)#], which excludes the ASCII carriage return and line feed codes. The corresponding escape codes are \r and \n.
- A set of characters enclosed in brackets ([]) is a one-character RE that matches any of the characters in that set. For example, "[akm]" matches an "a", "k", or "m". A dash in a set of characters inside braces indicates a range of characters; for example, [a-z] matches any lowercase letter.
- If the first character of a character set is the caret (^), the RE matches any character except those in the set. It does not match the empty string; for example: [^akm] matches any character except "a", "k", or "m". The caret loses its special meaning if it is not the first character of the set.
- To make a regular expression case insensitive, substitute individual characters with character sets; for example, [Nn][Ii][Cc][Kk].
- If you want to include ] (closing square bracket) in square brackets it must be the first character. Otherwise, it does not work even if you use \]. The following example illustrates this:
<!--- Want to replace closing square bracket and all a's with * --->
<cfset strSearch = "[Test message]">
<!--- Next line does not work since ] is not the FIRST character
within [] --->
<cfset re = "[a\]]">
<cfoutput>REReplace(#strSearch#,#re#,"*","ALL") -
#REReplace(strSearch,re,"*","ALL")#<br>
Neither ']' nor 'a' was replaced because we searched for 'a'
followed by ']'<br>
</cfoutput>
<!--- Next line works since ] is the FIRST character within [] --->
<cfset re = "[]a]">
<cfoutput>REReplace(#strSearch#,#re#,"*","ALL") -
#REReplace(strSearch,re,"*","ALL")#<br>
Both 'a' and ']' were Replaced with *<br></cfoutput>
Character classes
In ColdFusion regular expressions, you can specify a character using one of the POSIX character classes. You enclose the character class name inside two square brackets, as in this example:
REReplace ("Macromedia Web Site","[[:space:]]","*","ALL")
This code replaces all the spaces with *, producing this string:
Macromedia*Web*Site
The following table shows the POSIX character classes that ColdFusion supports:
Character Class |
Matches |
alpha
|
Matches any letter. Same as [A-Za-z].
|
upper
|
Matches any uppercase letter. Same as [A-Z].
|
lower
|
Matches any lowercase letter. Same as [a-z].
|
digit
|
Matches any digit. Same as [0-9].
|
alnum
|
Matches any alphanumeric character. Same as [A-Za-z0-9].
|
xdigit
|
Matches any hexadecimal digit. Same as [0-9A-Fa-f].
|
space
|
Matches a tab, new line, vertical tab, form feed, carriage return, or space.
|
print
|
Matches any printable character.
|
punct
|
Matches any punctuation character, that is, one of ! ' # S % & ` ( ) * + , - . / : ; < = > ? @ [ / ] ^ _ { | } ~
|
graph
|
Matches any of the characters defined as a printable character except those defined as part of the space character class.
|
cntrl
|
Matches any character not part of the character classes [:upper:], [:lower:], [:alpha:], [:digit:], [:punct:], [:graph:], [:print:], or [:xdigit:].
|
Copyright © 2001, Macromedia Inc. All rights reserved. |
|