[Contents]
[Previous] [Next] [Last]This section describes the regular expression object and its methods.
compile
method exec
method test
method
The literal text format is compiled into a compact and efficient internal representation.
regexp
= /pattern
/[i|g|gi]
regexp
= new RegExp("pattern
", ["i"|"g"|"gi"])
regexp
is the name of the regular expression object.
pattern
is the text of the regular expression.
i |
ignore case |
g |
global match |
gi |
global match and ignore case |
The literal notation, for example, /ab+c/
, provides compilation of the
regular expression once when the expression is evaluated. Use literal notation when the
regular expression will remain constant. For example, if you use literal notation to
construct a regular expression used in a loop, the regular expression won't be recompiled
on each interation.
new RegExp("ab+c")
, provides runtime compilation of
the regular expression. Use the constructor function when you know the regular expression
pattern will be changing, or you don't know the pattern and are getting it from another
source, such as user input. Once you have a defined regular expression, and if the regular
expression is used throughout the script and may change, you can use the compile
method to compile a new regular expression for efficient reuse.
A read-only Boolean property that reflects whether or not the "g"
flag is used with the regular expression: true
if used, false
if
not used. The "g"
flag indicates that the regular expression should
be tested against all possible matches in a string.
compile
method changes the value of this property.
A read-only Boolean property that reflects whether or not the "i"
flag is used with the regular expression: true
if used, false
if
not used. The "i"
flag indicates that case should be ignored while
attempting a match in a string.
compile
method changes the value of this property.
A read/write integer property that specifies the index at which to start the next
match. This property is set only if the regular expression used the "g"
flag to indicate a global search. The following rules apply:
lastIndex
is greater than the length of the string, regexp.test
and regexp.exec
fail, and lastIndex
is set to 0
.lastIndex
is equal to the length of the string and if the regular
expression matches the empty string, then the regular expression matches input starting at
lastIndex
. lastIndex
is equal to the length of the string and if the regular
expression does not match the empty string, then the regular expression mismatches input,
and lastIndex
is reset to 0
. lastIndex
is set to the next position following the most recent
match. For example, consider the following sequence of statements:
re = /(hi)?/g // Matches the empty string.
re("hi") // Returns ["hi", "hi"] with lastIndex equal to 2.
re("hi") // Returns [""], an empty array whose zeroth element is the match // string. In this case, the empty string because lastIndex was 2 (and // still is 2) and "hi" has length 2.
A property that contains the text of the pattern, excluding the forward slashes and "g"
or "i"
flags.
Core method. Compiles a regular expression object during execution of a script.
regexp.compile("pattern", ["i"|"g"|"gi"])
regexp
is the name of the regular expression.
pattern
is the text of the regular expression.
i |
ignore case |
g |
global match |
gi |
global match and ignore case |
Use the compile
method to compile a regular expression created with the
constructor function. This forces compilation of the regular expression once only which
means the regular expression isn't compiled each time it is encountered. Use the compile
method when you know the regular expression will remain constant (after getting its
pattern) and will be used repeatedly throughout the script.
compile
method to change the
regular expression during execution. For example, if the regular expression changes, you
can use the compile
method to recompile the object for more efficient
repeated use.
Calling this method changes the value of the regular expression's
source
,
global
,
and ignoreCase
properties.
Core method. Executes the search for a match in a specified string.
regexp.exec(str)
or use the shortcut version
regexp(str)
regexp
is the name of the regular expression. It can be a variable name or a
literal.
str
is the string against which to match the regular
expression. This is an optional argument. If omitted, the value of RegExp.input
is used, as described in Chapter 11,
"The RegExp Object."
If you are executing a match simply to find true
or false
,
use the
test
method or the String
search
method. If the match succeeds, the exec
method returns an
array and updates properties of the regular expression object and the predefined regular
expression object, RegExp
. If the match fails, the exec
method
returns null
.
Consider the following example:
<SCRIPT LANGUAGE="JavaScript1.2"> //Match one d followed by one or more b's followed by one d //Remember matched b's and the following d //Ignore case myRe=/d(b+)(d)/ig; myArray = myRe.exec("cdbBdbsbz"); </SCRIPT>
The following table shows the results for this script:
<SCRIPT LANGUAGE="JavaScript1.2"> myRe=/ab*/g; str = "abbcdefabh" myArray = myRe.exec(str); document.writeln("Found " + myArray[0] + ". Next match starts at " + myRe.lastIndex) mySecondArray = myRe.exec(str); document.writeln("Found " + mySecondArray[0] + ". Next match starts at " + myRe.lastIndex) </SCRIPT>
This script displays the following text:
Found abb. Next match starts at 3
Found ab. Next match starts at 9
In the following example, the user enters a name and the script executes a match against the input. It then cycles through the array to see if other names match the user's name.
This script assumes that first names of registered party attendees are preloaded into the array A, perhaps by gathering them from a party database.<HTML>
<SCRIPT LANGUAGE="JavaScript1.2"> A = ["Frank", "Emily", "Jane", "Harry", "Nick", "Beth", "Rick", \ "Terrence", "Carol", "Ann", "Terry", "Frank", "Alice", "Rick", \ "Bill", "Tom", "Fiona", "Jane", "William", "Joan", "Beth"] re = /\w+/i
function lookup() { firstName = re.exec() if (!firstName) window.alert (RegExp.input + " isn't a name!") else { count = 0 for (i=0; i<A.length; i++) if (firstName[0].toLowerCase() == A[i].toLowerCase()) count++ if (count ==1) midstring = " other has " else midstring = " others have " window.alert ("Thanks, " + count + midstring + "the same name!") } }
</SCRIPT>
Enter your first name and then press Enter.
<FORM> <INPUT TYPE:"TEXT" NAME="FirstName" onChange="lookup(this);"> </FORM>
</HTML>
Core method. Executes the search for a match between a regular expression and a specified string.
regexp.test(str)
regexp
is the name of the regular expression.
str
is the string against which to match the regular
expression. This is an optional argument. If omitted, the value of RegExp.input
is used, as described in Chapter 11,
"The RegExp Object."
When you want to know whether a pattern is found in a string use the test
method (similar to the String
search
method); for more information (but slower execution) use the exec
method (similar to the String
match
method).
The following example prints a message which depends on the success of the test.
function testinput(re, str){ if (re.test(str)) midstring = " contains "; else midstring = " does not contain "; document.write (str + midstring + re.source); }
[Contents]
[Previous] [Next] [Last]Last Updated: 10/22/97 11:48:15
Copyright © 1997 Netscape Communications Corporation