/** * @class RegExp * * Creates a regular expression object for matching text according to a pattern. * * When using the constructor function, the normal string escape rules (preceding * special characters with \ when included in a string) are necessary. For * example, the following are equivalent: * * var re = new RegExp("\\w+"); * var re = /\w+/; * * Notice that the parameters to the literal format do not use quotation marks to * indicate strings, while the parameters to the constructor function do use * quotation marks. So the following expressions create the same regular * expression: * * /ab+c/i; * new RegExp("ab+c", "i"); * * # Special characters in regular expressions * * | Character | Meaning * |:-----------------|:-------------------------------------------------------------------------------------- * | `\` | For characters that are usually treated literally, indicates that the next character * | | is special and not to be interpreted literally. * | | For example, `/b/` matches the character 'b'. By placing a backslash in front of b, that * | | is by using `/\b/`, the character becomes special to mean match a word boundary. * | | * | | _or_ * | | * | | For characters that are usually treated specially, indicates that the next character is * | | not special and should be interpreted literally. * | | * | | For example, `*` is a special character that means 0 or more occurrences of the preceding * | | character should be matched; for example, `/a*\/` means match 0 or more "a"s. To match * * | | literally, precede it with a backslash; for example, `/a\*\/` matches 'a*'. * | | * | `^` | Matches beginning of input. If the multiline flag is set to true, also matches * | | immediately after a line break character. * | | * | | For example, `/^A/` does not match the 'A' in "an A", but does match the first 'A' in * | | "An A". * | | * | `$` | Matches end of input. If the multiline flag is set to true, also matches immediately * | | before a line break character. * | | * | | For example, `/t$/` does not match the 't' in "eater", but does match it in "eat". * | | * | `*` | Matches the preceding item 0 or more times. * | | * | | For example, `/bo*\/` matches 'boooo' in "A ghost booooed" and 'b' in "A bird warbled", * | | but nothing in "A goat grunted". * | | * | `+` | Matches the preceding item 1 or more times. Equivalent to `{1,}`. * | | * | | For example, `/a+/` matches the 'a' in "candy" and all the a's in "caaaaaaandy". * | | * | `?` | Matches the preceding item 0 or 1 time. * | | * | | For example, `/e?le?/` matches the 'el' in "angel" and the 'le' in "angle." * | | * | | If used immediately after any of the quantifiers `*`, `+`, `?`, or `{}`, makes the quantifier * | | non-greedy (matching the minimum number of times), as opposed to the default, which is * | | greedy (matching the maximum number of times). * | | * | | Also used in lookahead assertions, described under `(?=)`, `(?!)`, and `(?:)` in this table. * | | * | `.` | (The decimal point) matches any single character except the newline characters: \n \r * | | \u2028 or \u2029. (`[\s\S]` can be used to match any character including new lines.) * | | * | | For example, `/.n/` matches 'an' and 'on' in "nay, an apple is on the tree", but not 'nay'. * | | * | `(x)` | Matches `x` and remembers the match. These are called capturing parentheses. * | | * | | For example, `/(foo)/` matches and remembers 'foo' in "foo bar." The matched substring can * | | be recalled from the resulting array's elements `[1], ..., [n]` or from the predefined RegExp * | | object's properties `$1, ..., $9`. * | | * | `(?:x)` | Matches `x` but does not remember the match. These are called non-capturing parentheses. * | | The matched substring can not be recalled from the resulting array's elements `[1], ..., [n]` * | | or from the predefined RegExp object's properties `$1, ..., $9`. * | | * | `x(?=y)` | Matches `x` only if `x` is followed by `y`. For example, `/Jack(?=Sprat)/` matches 'Jack' only if * | | it is followed by 'Sprat'. `/Jack(?=Sprat|Frost)/` matches 'Jack' only if it is followed by * | | 'Sprat' or 'Frost'. However, neither 'Sprat' nor 'Frost' is part of the match results. * | | * | `x(?!y)` | Matches `x` only if `x` is not followed by `y`. For example, `/\d+(?!\.)/` matches a number only * | | if it is not followed by a decimal point. * | | * | | `/\d+(?!\.)/.exec("3.141")` matches 141 but not 3.141. * | | * | `x|y` | Matches either `x` or `y`. * | | * | | For example, `/green|red/` matches 'green' in "green apple" and 'red' in "red apple." * | | * | `{n}` | Where `n` is a positive integer. Matches exactly n occurrences of the preceding item. * | | * | | For example, `/a{2}/` doesn't match the 'a' in "candy," but it matches all of the a's * | | in "caandy," and the first two a's in "caaandy." * | | * | `{n,}` | Where `n` is a positive integer. Matches at least n occurrences of the preceding item. * | | * | | For example, `/a{2,}/` doesn't match the 'a' in "candy", but matches all of the a's in * | | "caandy" and in "caaaaaaandy." * | | * | `{n,m}` | Where `n` and `m` are positive integers. Matches at least `n` and at most `m` occurrences of the * | | preceding item. * | | * | | For example, `/a{1,3}/` matches nothing in "cndy", the 'a' in "candy," the first two a's * | | in "caandy," and the first three a's in "caaaaaaandy". Notice that when matching * | | "caaaaaaandy", the match is "aaa", even though the original string had more a's in it. * | | * | `[xyz]` | A character set. Matches any one of the enclosed characters. You can specify a range of * | | characters by using a hyphen. * | | * | | For example, `[abcd]` is the same as `[a-d]`. They match the 'b' in "brisket" and the 'c' * | | in "chop". * | | * | `[^xyz]` | A negated or complemented character set. That is, it matches anything that is not * | | enclosed in the brackets. You can specify a range of characters by using a hyphen. * | | * | | For example, `[^abc]` is the same as `[^a-c]`. They initially match 'r' in "brisket" and * | | 'h' in "chop." * | | * | `[\b]` | Matches a backspace. (Not to be confused with `\b`.) * | | * | `\b` | Matches a word boundary, such as a space. (Not to be confused with `[\b]`.) * | | * | | For example, `/\bn\w/` matches the 'no' in "noonday"; `/\wy\b/` matches the 'ly' in * | | "possibly yesterday." * | | * | `\B` | Matches a non-word boundary. * | | * | | For example, `/\w\Bn/` matches 'on' in "noonday", and `/y\B\w/` matches 'ye' in "possibly * | | yesterday." * | | * | `\cX` | Where X is a letter from A - Z. Matches a control character in a string. * | | * | | For example, `/\cM/` matches control-M in a string. * | | * | `\d` | Matches a digit character in the basic Latin alphabet. Equivalent to `[0-9]`. * | | * | | For example, `/\d/` or `/[0-9]/` matches '2' in "B2 is the suite number." * | | * | `\D` | Matches any non-digit character in the basic Latin alphabet. Equivalent to `[^0-9]`. * | | * | | For example, `/\D/` or `/[^0-9]/` matches 'B' in "B2 is the suite number. * | | * | `\f` | Matches a form-feed. * | | * | `\n` | Matches a linefeed. * | | * | `\r` | Matches a carriage return. * | | * | `\s` | Matches a single white space character, including space, tab, form feed, line feed and * | | other unicode spaces. Equivalent to: * | | * | | `[\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]` * | | * | | For example, `/\s\w*\/` matches ' bar' in "foo bar." * | | * | `\S` | Matches a single character other than white space. Equivalent to: * | | * | | `[^\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]` * | | * | | For example, `/\S\w*\/` matches 'foo' in "foo bar." * | | * | `\t` | Matches a tab. * | | * | `\v` | Matches a vertical tab. * | | * | `\w` | Matches any alphanumeric character from the basic Latin alphabet, including the * | | underscore. Equivalent to `[A-Za-z0-9_]`. * | | * | | For example, `/\w/` matches 'a' in "apple," '5' in "$5.28," and '3' in "3D." * | | * | `\W` | Matches any character that is not a word character from the basic Latin alphabet. Equivalent * | | to `[^A-Za-z0-9_]`. * | | * | | For example, `/\W/` or `/[^A-Za-z0-9_]/` matches '%' in "50%." * | | * | `\n` | Where `n` is a positive integer. A back reference to the last substring matching the n * | | parenthetical in the regular expression (counting left parentheses). * | | * | | For example, `/apple(,)\sorange\1/` matches 'apple, orange,' in "apple, orange, cherry, * | | peach." A more complete example follows this table. * | | * | `\0` | Matches a NULL character. Do not follow this with another digit. * | | * | `\xhh` | Matches the character with the code `hh` (two hexadecimal digits) * | | * | `\uhhhh` | Matches the character with the Unicode value `hhhh` (four hexadecimal digits) * * The literal notation provides compilation of the regular expression 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 iteration. * * The constructor of the regular expression object, for example, 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. * *