mozilla

Compare Revisions

RegExp.prototype.sticky

Change Revisions

Revision 320197:

Revision 320197 by ostorj on

Revision 320199:

Revision 320199 by ostorj on

Title:
sticky
sticky
Slug:
JavaScript/Reference/Global_Objects/RegExp/sticky
JavaScript/Reference/Global_Objects/RegExp/sticky
Content:

Revision 320197
Revision 320199
tt60    <h2 id="Examples" name="Examples">
61      Examples
62    </h2>
63    <h3 id="Example:_Using_a_regular_expression_with_the_.22stick
 >y.22_flag" name="Example:_Using_a_regular_expression_with_the_.22
 >sticky.22_flag">
64      Example: Using a regular expression with the "sticky" flag
65    </h3>
66    <p>
67      This example demonstrates how one could use the sticky flag
 > on regular expressions to match individual lines of multiline in
 >put.
68    </p>
69    <pre class="brush: js">
70var text = "First line\nsecond line";
71var regex = /(\S+) line\n?/y;
72 
73var match = regex.exec(text);
74print(match[1]);  // prints "First"
75print(regex.lastIndex); // prints 11
76 
77var match2 = regex.exec(text);
78print(match2[1]); // prints "Second"
79print(regex.lastIndex); // prints "22"
80 
81var match3 = regex.exec(text);
82print(match3 === null); // prints "true"
83</pre>
84    <p>
85      One can test at run-time whether the sticky flag is support
 >ed, using <code>try&nbsp;{&nbsp;…&nbsp;} catch&nbsp;{&nbsp;…&nbsp
 >;}</code>. For this, either an <code>eval(…)</code> expression or
 > the <code>RegExp(<var>regex-string</var>,&nbsp;<var>flags-string
 ></var>)</code> syntax must be used (since the <code>/<var>regex</
 >var>/<var>flags</var></code> notation is processed at compile-tim
 >e, so throws an exception before the <code>catch</code> block is 
 >encountered). For example:
86    </p>
87    <pre class="brush: js">
88var supports_sticky;
89try { RegExp('','y'); supports_sticky = true; }
90catch(e) { supports_sticky = false; }
91alert(supports_sticky); // alerts "false" in Firefox 2, "true" in
 > Firefox 3+
92</pre>

Back to History