| /* ***** BEGIN LICENSE BLOCK ***** |
| * Version: NPL 1.1/GPL 2.0/LGPL 2.1 |
| * |
| * The contents of this file are subject to the Netscape Public License |
| * Version 1.1 (the "License"); you may not use this file except in |
| * compliance with the License. You may obtain a copy of the License at |
| * http://www.mozilla.org/NPL/ |
| * |
| * Software distributed under the License is distributed on an "AS IS" basis, |
| * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
| * for the specific language governing rights and limitations under the |
| * License. |
| * |
| * The Original Code is JavaScript Engine testing utilities. |
| * |
| * The Initial Developer of the Original Code is Netscape Communications Corp. |
| * Portions created by the Initial Developer are Copyright (C) 2002 |
| * the Initial Developer. All Rights Reserved. |
| * |
| * Contributor(s): pschwartau@netscape.com, rogerl@netscape.com |
| * |
| * Alternatively, the contents of this file may be used under the terms of |
| * either the GNU General Public License Version 2 or later (the "GPL"), or |
| * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
| * in which case the provisions of the GPL or the LGPL are applicable instead |
| * of those above. If you wish to allow use of your version of this file only |
| * under the terms of either the GPL or the LGPL, and not to allow others to |
| * use your version of this file under the terms of the NPL, indicate your |
| * decision by deleting the provisions above and replace them with the notice |
| * and other provisions required by the GPL or the LGPL. If you do not delete |
| * the provisions above, a recipient may use your version of this file under |
| * the terms of any one of the NPL, the GPL or the LGPL. |
| * |
| * ***** END LICENSE BLOCK ***** |
| * |
| * |
| * Date: 2002-07-07 |
| * SUMMARY: Testing JS RegExp engine against Perl 5 RegExp engine. |
| * Adjust cnLBOUND, cnUBOUND below to restrict which sections are tested. |
| * |
| * This test was created by running various patterns and strings through the |
| * Perl 5 RegExp engine. We saved the results below to test the JS engine. |
| * |
| * NOTE: ECMA/JS and Perl do differ on certain points. We have either commented |
| * out such sections altogether, or modified them to fit what we expect from JS. |
| * |
| * EXAMPLES: |
| * |
| * - In JS, regexp captures (/(a) etc./) must hold |undefined| if not used. |
| * See http://bugzilla.mozilla.org/show_bug.cgi?id=123437. |
| * By contrast, in Perl, unmatched captures hold the empty string. |
| * We have modified such sections accordingly. Example: |
| |
| pattern = /^([^a-z])|(\^)$/; |
| string = '.'; |
| actualmatch = string.match(pattern); |
| //expectedmatch = Array('.', '.', ''); <<<--- Perl |
| expectedmatch = Array('.', '.', undefined); <<<--- JS |
| addThis(); |
| |
| |
| * - In JS, you can't refer to a capture before it's encountered & completed |
| * |
| * - Perl supports ] & ^] inside a [], ECMA does not |
| * |
| * - ECMA does support (?: (?= and (?! operators, but doesn't support (?< etc. |
| * |
| * - ECMA doesn't support (?imsx or (?-imsx |
| * |
| * - ECMA doesn't support (?(condition) |
| * |
| * - Perl has \Z has end-of-line, ECMA doesn't |
| * |
| * - In ECMA, ^ matches only the empty string before the first character |
| * |
| * - In ECMA, $ matches only the empty string at end of input (unless multiline) |
| * |
| * - ECMA spec says that each atom in a range must be a single character |
| * |
| * - ECMA doesn't support \A |
| * |
| * - ECMA doesn't have rules for [: |
| * |
| */ |
| //----------------------------------------------------------------------------- |
| var i = 0; |
| var bug = 85721; |
| var summary = 'Testing regular expression edge cases'; |
| var cnSingleSpace = ' '; |
| var status = ''; |
| var statusmessages = new Array(); |
| var pattern = ''; |
| var patterns = new Array(); |
| var string = ''; |
| var strings = new Array(); |
| var actualmatch = ''; |
| var actualmatches = new Array(); |
| var expectedmatch = ''; |
| var expectedmatches = new Array(); |
| var cnLBOUND = 1; |
| var cnUBOUND = 1000; |
| |
| |
| status = inSection(1); |
| pattern = /abc/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(2); |
| pattern = /abc/; |
| string = 'xabcy'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(3); |
| pattern = /abc/; |
| string = 'ababc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(4); |
| pattern = /ab*c/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(5); |
| pattern = /ab*bc/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(6); |
| pattern = /ab*bc/; |
| string = 'abbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abbc'); |
| addThis(); |
| |
| status = inSection(7); |
| pattern = /ab*bc/; |
| string = 'abbbbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abbbbc'); |
| addThis(); |
| |
| status = inSection(8); |
| pattern = /.{1}/; |
| string = 'abbbbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(9); |
| pattern = /.{3,4}/; |
| string = 'abbbbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abbb'); |
| addThis(); |
| |
| status = inSection(10); |
| pattern = /ab{0,}bc/; |
| string = 'abbbbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abbbbc'); |
| addThis(); |
| |
| status = inSection(11); |
| pattern = /ab+bc/; |
| string = 'abbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abbc'); |
| addThis(); |
| |
| status = inSection(12); |
| pattern = /ab+bc/; |
| string = 'abbbbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abbbbc'); |
| addThis(); |
| |
| status = inSection(13); |
| pattern = /ab{1,}bc/; |
| string = 'abbbbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abbbbc'); |
| addThis(); |
| |
| status = inSection(14); |
| pattern = /ab{1,3}bc/; |
| string = 'abbbbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abbbbc'); |
| addThis(); |
| |
| status = inSection(15); |
| pattern = /ab{3,4}bc/; |
| string = 'abbbbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abbbbc'); |
| addThis(); |
| |
| status = inSection(16); |
| pattern = /ab?bc/; |
| string = 'abbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abbc'); |
| addThis(); |
| |
| status = inSection(17); |
| pattern = /ab?bc/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(18); |
| pattern = /ab{0,1}bc/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(19); |
| pattern = /ab?c/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(20); |
| pattern = /ab{0,1}c/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(21); |
| pattern = /^abc$/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(22); |
| pattern = /^abc/; |
| string = 'abcc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(23); |
| pattern = /abc$/; |
| string = 'aabc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(24); |
| pattern = /^/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| status = inSection(25); |
| pattern = /$/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| status = inSection(26); |
| pattern = /a.c/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(27); |
| pattern = /a.c/; |
| string = 'axc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('axc'); |
| addThis(); |
| |
| status = inSection(28); |
| pattern = /a.*c/; |
| string = 'axyzc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('axyzc'); |
| addThis(); |
| |
| status = inSection(29); |
| pattern = /a[bc]d/; |
| string = 'abd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abd'); |
| addThis(); |
| |
| status = inSection(30); |
| pattern = /a[b-d]e/; |
| string = 'ace'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ace'); |
| addThis(); |
| |
| status = inSection(31); |
| pattern = /a[b-d]/; |
| string = 'aac'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ac'); |
| addThis(); |
| |
| status = inSection(32); |
| pattern = /a[-b]/; |
| string = 'a-'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a-'); |
| addThis(); |
| |
| status = inSection(33); |
| pattern = /a[b-]/; |
| string = 'a-'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a-'); |
| addThis(); |
| |
| status = inSection(34); |
| pattern = /a]/; |
| string = 'a]'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a]'); |
| addThis(); |
| |
| /* Perl supports ] & ^] inside a [], ECMA does not |
| pattern = /a[]]b/; |
| status = inSection(35); |
| string = 'a]b'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a]b'); |
| addThis(); |
| */ |
| |
| status = inSection(36); |
| pattern = /a[^bc]d/; |
| string = 'aed'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aed'); |
| addThis(); |
| |
| status = inSection(37); |
| pattern = /a[^-b]c/; |
| string = 'adc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('adc'); |
| addThis(); |
| |
| /* Perl supports ] & ^] inside a [], ECMA does not |
| status = inSection(38); |
| pattern = /a[^]b]c/; |
| string = 'adc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('adc'); |
| addThis(); |
| */ |
| |
| status = inSection(39); |
| pattern = /\ba\b/; |
| string = 'a-'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(40); |
| pattern = /\ba\b/; |
| string = '-a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(41); |
| pattern = /\ba\b/; |
| string = '-a-'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(42); |
| pattern = /\By\b/; |
| string = 'xy'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('y'); |
| addThis(); |
| |
| status = inSection(43); |
| pattern = /\by\B/; |
| string = 'yz'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('y'); |
| addThis(); |
| |
| status = inSection(44); |
| pattern = /\By\B/; |
| string = 'xyz'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('y'); |
| addThis(); |
| |
| status = inSection(45); |
| pattern = /\w/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(46); |
| pattern = /\W/; |
| string = '-'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('-'); |
| addThis(); |
| |
| status = inSection(47); |
| pattern = /a\Sb/; |
| string = 'a-b'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a-b'); |
| addThis(); |
| |
| status = inSection(48); |
| pattern = /\d/; |
| string = '1'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('1'); |
| addThis(); |
| |
| status = inSection(49); |
| pattern = /\D/; |
| string = '-'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('-'); |
| addThis(); |
| |
| status = inSection(50); |
| pattern = /[\w]/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(51); |
| pattern = /[\W]/; |
| string = '-'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('-'); |
| addThis(); |
| |
| status = inSection(52); |
| pattern = /a[\S]b/; |
| string = 'a-b'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a-b'); |
| addThis(); |
| |
| status = inSection(53); |
| pattern = /[\d]/; |
| string = '1'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('1'); |
| addThis(); |
| |
| status = inSection(54); |
| pattern = /[\D]/; |
| string = '-'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('-'); |
| addThis(); |
| |
| status = inSection(55); |
| pattern = /ab|cd/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| status = inSection(56); |
| pattern = /ab|cd/; |
| string = 'abcd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| status = inSection(57); |
| pattern = /()ef/; |
| string = 'def'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ef', ''); |
| addThis(); |
| |
| status = inSection(58); |
| pattern = /a\(b/; |
| string = 'a(b'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a(b'); |
| addThis(); |
| |
| status = inSection(59); |
| pattern = /a\(*b/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| status = inSection(60); |
| pattern = /a\(*b/; |
| string = 'a((b'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a((b'); |
| addThis(); |
| |
| status = inSection(61); |
| pattern = /a\\b/; |
| string = 'a\\b'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a\\b'); |
| addThis(); |
| |
| status = inSection(62); |
| pattern = /((a))/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a', 'a', 'a'); |
| addThis(); |
| |
| status = inSection(63); |
| pattern = /(a)b(c)/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc', 'a', 'c'); |
| addThis(); |
| |
| status = inSection(64); |
| pattern = /a+b+c/; |
| string = 'aabbabc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(65); |
| pattern = /a{1,}b{1,}c/; |
| string = 'aabbabc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(66); |
| pattern = /a.+?c/; |
| string = 'abcabc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| |
| status = inSection(67); |
| pattern = /(a+|b)*/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab', 'b'); |
| addThis(); |
| |
| status = inSection(68); |
| pattern = /(a+|b){0,}/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab', 'b'); |
| addThis(); |
| |
| status = inSection(69); |
| pattern = /(a+|b)+/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab', 'b'); |
| addThis(); |
| |
| status = inSection(70); |
| pattern = /(a+|b){1,}/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab', 'b'); |
| addThis(); |
| |
| status = inSection(71); |
| pattern = /(a+|b)?/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a', 'a'); |
| addThis(); |
| |
| status = inSection(72); |
| pattern = /(a+|b){0,1}/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a', 'a'); |
| addThis(); |
| |
| status = inSection(73); |
| pattern = /[^ab]*/; |
| string = 'cde'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('cde'); |
| addThis(); |
| |
| status = inSection(74); |
| pattern = /([abc])*d/; |
| string = 'abbbcd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abbbcd', 'c'); |
| addThis(); |
| |
| status = inSection(75); |
| pattern = /([abc])*bcd/; |
| string = 'abcd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abcd', 'a'); |
| addThis(); |
| |
| status = inSection(76); |
| pattern = /a|b|c|d|e/; |
| string = 'e'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('e'); |
| addThis(); |
| |
| status = inSection(77); |
| pattern = /(a|b|c|d|e)f/; |
| string = 'ef'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ef', 'e'); |
| addThis(); |
| |
| status = inSection(78); |
| pattern = /abcd*efg/; |
| string = 'abcdefg'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abcdefg'); |
| addThis(); |
| |
| status = inSection(79); |
| pattern = /ab*/; |
| string = 'xabyabbbz'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| status = inSection(80); |
| pattern = /ab*/; |
| string = 'xayabbbz'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(81); |
| pattern = /(ab|cd)e/; |
| string = 'abcde'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('cde', 'cd'); |
| addThis(); |
| |
| status = inSection(82); |
| pattern = /[abhgefdc]ij/; |
| string = 'hij'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('hij'); |
| addThis(); |
| |
| status = inSection(83); |
| pattern = /(abc|)ef/; |
| string = 'abcdef'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ef', ''); |
| addThis(); |
| |
| status = inSection(84); |
| pattern = /(a|b)c*d/; |
| string = 'abcd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('bcd', 'b'); |
| addThis(); |
| |
| status = inSection(85); |
| pattern = /(ab|ab*)bc/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc', 'a'); |
| addThis(); |
| |
| status = inSection(86); |
| pattern = /a([bc]*)c*/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc', 'bc'); |
| addThis(); |
| |
| status = inSection(87); |
| pattern = /a([bc]*)(c*d)/; |
| string = 'abcd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abcd', 'bc', 'd'); |
| addThis(); |
| |
| status = inSection(88); |
| pattern = /a([bc]+)(c*d)/; |
| string = 'abcd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abcd', 'bc', 'd'); |
| addThis(); |
| |
| status = inSection(89); |
| pattern = /a([bc]*)(c+d)/; |
| string = 'abcd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abcd', 'b', 'cd'); |
| addThis(); |
| |
| status = inSection(90); |
| pattern = /a[bcd]*dcdcde/; |
| string = 'adcdcde'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('adcdcde'); |
| addThis(); |
| |
| status = inSection(91); |
| pattern = /(ab|a)b*c/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc', 'ab'); |
| addThis(); |
| |
| status = inSection(92); |
| pattern = /((a)(b)c)(d)/; |
| string = 'abcd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abcd', 'abc', 'a', 'b', 'd'); |
| addThis(); |
| |
| status = inSection(93); |
| pattern = /[a-zA-Z_][a-zA-Z0-9_]*/; |
| string = 'alpha'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('alpha'); |
| addThis(); |
| |
| status = inSection(94); |
| pattern = /^a(bc+|b[eh])g|.h$/; |
| string = 'abh'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('bh', undefined); |
| addThis(); |
| |
| status = inSection(95); |
| pattern = /(bc+d$|ef*g.|h?i(j|k))/; |
| string = 'effgz'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('effgz', 'effgz', undefined); |
| addThis(); |
| |
| status = inSection(96); |
| pattern = /(bc+d$|ef*g.|h?i(j|k))/; |
| string = 'ij'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ij', 'ij', 'j'); |
| addThis(); |
| |
| status = inSection(97); |
| pattern = /(bc+d$|ef*g.|h?i(j|k))/; |
| string = 'reffgz'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('effgz', 'effgz', undefined); |
| addThis(); |
| |
| status = inSection(98); |
| pattern = /((((((((((a))))))))))/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'); |
| addThis(); |
| |
| status = inSection(99); |
| pattern = /((((((((((a))))))))))\10/; |
| string = 'aa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aa', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'); |
| addThis(); |
| |
| status = inSection(100); |
| pattern = /((((((((((a))))))))))/; |
| string = 'a!'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'); |
| addThis(); |
| |
| status = inSection(101); |
| pattern = /(((((((((a)))))))))/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'); |
| addThis(); |
| |
| status = inSection(102); |
| pattern = /(.*)c(.*)/; |
| string = 'abcde'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abcde', 'ab', 'de'); |
| addThis(); |
| |
| status = inSection(103); |
| pattern = /abcd/; |
| string = 'abcd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abcd'); |
| addThis(); |
| |
| status = inSection(104); |
| pattern = /a(bc)d/; |
| string = 'abcd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abcd', 'bc'); |
| addThis(); |
| |
| status = inSection(105); |
| pattern = /a[-]?c/; |
| string = 'ac'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ac'); |
| addThis(); |
| |
| status = inSection(106); |
| pattern = /(abc)\1/; |
| string = 'abcabc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abcabc', 'abc'); |
| addThis(); |
| |
| status = inSection(107); |
| pattern = /([a-c]*)\1/; |
| string = 'abcabc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abcabc', 'abc'); |
| addThis(); |
| |
| status = inSection(108); |
| pattern = /(a)|\1/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a', 'a'); |
| addThis(); |
| |
| status = inSection(109); |
| pattern = /(([a-c])b*?\2)*/; |
| string = 'ababbbcbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ababb', 'bb', 'b'); |
| addThis(); |
| |
| status = inSection(110); |
| pattern = /(([a-c])b*?\2){3}/; |
| string = 'ababbbcbc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ababbbcbc', 'cbc', 'c'); |
| addThis(); |
| |
| /* Can't refer to a capture before it's encountered & completed |
| status = inSection(111); |
| pattern = /((\3|b)\2(a)x)+/; |
| string = 'aaaxabaxbaaxbbax'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('bbax', 'bbax', 'b', 'a'); |
| addThis(); |
| |
| status = inSection(112); |
| pattern = /((\3|b)\2(a)){2,}/; |
| string = 'bbaababbabaaaaabbaaaabba'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('bbaaaabba', 'bba', 'b', 'a'); |
| addThis(); |
| */ |
| |
| status = inSection(113); |
| pattern = /abc/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(114); |
| pattern = /abc/i; |
| string = 'XABCY'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(115); |
| pattern = /abc/i; |
| string = 'ABABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(116); |
| pattern = /ab*c/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(117); |
| pattern = /ab*bc/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(118); |
| pattern = /ab*bc/i; |
| string = 'ABBC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABBC'); |
| addThis(); |
| |
| status = inSection(119); |
| pattern = /ab*?bc/i; |
| string = 'ABBBBC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABBBBC'); |
| addThis(); |
| |
| status = inSection(120); |
| pattern = /ab{0,}?bc/i; |
| string = 'ABBBBC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABBBBC'); |
| addThis(); |
| |
| status = inSection(121); |
| pattern = /ab+?bc/i; |
| string = 'ABBC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABBC'); |
| addThis(); |
| |
| status = inSection(122); |
| pattern = /ab+bc/i; |
| string = 'ABBBBC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABBBBC'); |
| addThis(); |
| |
| status = inSection(123); |
| pattern = /ab{1,}?bc/i; |
| string = 'ABBBBC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABBBBC'); |
| addThis(); |
| |
| status = inSection(124); |
| pattern = /ab{1,3}?bc/i; |
| string = 'ABBBBC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABBBBC'); |
| addThis(); |
| |
| status = inSection(125); |
| pattern = /ab{3,4}?bc/i; |
| string = 'ABBBBC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABBBBC'); |
| addThis(); |
| |
| status = inSection(126); |
| pattern = /ab??bc/i; |
| string = 'ABBC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABBC'); |
| addThis(); |
| |
| status = inSection(127); |
| pattern = /ab??bc/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(128); |
| pattern = /ab{0,1}?bc/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(129); |
| pattern = /ab??c/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(130); |
| pattern = /ab{0,1}?c/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(131); |
| pattern = /^abc$/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(132); |
| pattern = /^abc/i; |
| string = 'ABCC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(133); |
| pattern = /abc$/i; |
| string = 'AABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(134); |
| pattern = /^/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| status = inSection(135); |
| pattern = /$/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| status = inSection(136); |
| pattern = /a.c/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(137); |
| pattern = /a.c/i; |
| string = 'AXC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AXC'); |
| addThis(); |
| |
| status = inSection(138); |
| pattern = /a.*?c/i; |
| string = 'AXYZC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AXYZC'); |
| addThis(); |
| |
| status = inSection(139); |
| pattern = /a[bc]d/i; |
| string = 'ABD'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABD'); |
| addThis(); |
| |
| status = inSection(140); |
| pattern = /a[b-d]e/i; |
| string = 'ACE'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ACE'); |
| addThis(); |
| |
| status = inSection(141); |
| pattern = /a[b-d]/i; |
| string = 'AAC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AC'); |
| addThis(); |
| |
| status = inSection(142); |
| pattern = /a[-b]/i; |
| string = 'A-'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A-'); |
| addThis(); |
| |
| status = inSection(143); |
| pattern = /a[b-]/i; |
| string = 'A-'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A-'); |
| addThis(); |
| |
| status = inSection(144); |
| pattern = /a]/i; |
| string = 'A]'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A]'); |
| addThis(); |
| |
| /* Perl supports ] & ^] inside a [], ECMA does not |
| status = inSection(145); |
| pattern = /a[]]b/i; |
| string = 'A]B'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A]B'); |
| addThis(); |
| */ |
| |
| status = inSection(146); |
| pattern = /a[^bc]d/i; |
| string = 'AED'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AED'); |
| addThis(); |
| |
| status = inSection(147); |
| pattern = /a[^-b]c/i; |
| string = 'ADC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ADC'); |
| addThis(); |
| |
| /* Perl supports ] & ^] inside a [], ECMA does not |
| status = inSection(148); |
| pattern = /a[^]b]c/i; |
| string = 'ADC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ADC'); |
| addThis(); |
| */ |
| |
| status = inSection(149); |
| pattern = /ab|cd/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AB'); |
| addThis(); |
| |
| status = inSection(150); |
| pattern = /ab|cd/i; |
| string = 'ABCD'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AB'); |
| addThis(); |
| |
| status = inSection(151); |
| pattern = /()ef/i; |
| string = 'DEF'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('EF', ''); |
| addThis(); |
| |
| status = inSection(152); |
| pattern = /a\(b/i; |
| string = 'A(B'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A(B'); |
| addThis(); |
| |
| status = inSection(153); |
| pattern = /a\(*b/i; |
| string = 'AB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AB'); |
| addThis(); |
| |
| status = inSection(154); |
| pattern = /a\(*b/i; |
| string = 'A((B'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A((B'); |
| addThis(); |
| |
| status = inSection(155); |
| pattern = /a\\b/i; |
| string = 'A\\B'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A\\B'); |
| addThis(); |
| |
| status = inSection(156); |
| pattern = /((a))/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A', 'A', 'A'); |
| addThis(); |
| |
| status = inSection(157); |
| pattern = /(a)b(c)/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC', 'A', 'C'); |
| addThis(); |
| |
| status = inSection(158); |
| pattern = /a+b+c/i; |
| string = 'AABBABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(159); |
| pattern = /a{1,}b{1,}c/i; |
| string = 'AABBABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(160); |
| pattern = /a.+?c/i; |
| string = 'ABCABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(161); |
| pattern = /a.*?c/i; |
| string = 'ABCABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(162); |
| pattern = /a.{0,5}?c/i; |
| string = 'ABCABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC'); |
| addThis(); |
| |
| status = inSection(163); |
| pattern = /(a+|b)*/i; |
| string = 'AB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AB', 'B'); |
| addThis(); |
| |
| status = inSection(164); |
| pattern = /(a+|b){0,}/i; |
| string = 'AB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AB', 'B'); |
| addThis(); |
| |
| status = inSection(165); |
| pattern = /(a+|b)+/i; |
| string = 'AB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AB', 'B'); |
| addThis(); |
| |
| status = inSection(166); |
| pattern = /(a+|b){1,}/i; |
| string = 'AB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AB', 'B'); |
| addThis(); |
| |
| status = inSection(167); |
| pattern = /(a+|b)?/i; |
| string = 'AB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A', 'A'); |
| addThis(); |
| |
| status = inSection(168); |
| pattern = /(a+|b){0,1}/i; |
| string = 'AB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A', 'A'); |
| addThis(); |
| |
| status = inSection(169); |
| pattern = /(a+|b){0,1}?/i; |
| string = 'AB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('', undefined); |
| addThis(); |
| |
| status = inSection(170); |
| pattern = /[^ab]*/i; |
| string = 'CDE'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('CDE'); |
| addThis(); |
| |
| status = inSection(171); |
| pattern = /([abc])*d/i; |
| string = 'ABBBCD'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABBBCD', 'C'); |
| addThis(); |
| |
| status = inSection(172); |
| pattern = /([abc])*bcd/i; |
| string = 'ABCD'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABCD', 'A'); |
| addThis(); |
| |
| status = inSection(173); |
| pattern = /a|b|c|d|e/i; |
| string = 'E'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('E'); |
| addThis(); |
| |
| status = inSection(174); |
| pattern = /(a|b|c|d|e)f/i; |
| string = 'EF'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('EF', 'E'); |
| addThis(); |
| |
| status = inSection(175); |
| pattern = /abcd*efg/i; |
| string = 'ABCDEFG'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABCDEFG'); |
| addThis(); |
| |
| status = inSection(176); |
| pattern = /ab*/i; |
| string = 'XABYABBBZ'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AB'); |
| addThis(); |
| |
| status = inSection(177); |
| pattern = /ab*/i; |
| string = 'XAYABBBZ'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A'); |
| addThis(); |
| |
| status = inSection(178); |
| pattern = /(ab|cd)e/i; |
| string = 'ABCDE'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('CDE', 'CD'); |
| addThis(); |
| |
| status = inSection(179); |
| pattern = /[abhgefdc]ij/i; |
| string = 'HIJ'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('HIJ'); |
| addThis(); |
| |
| status = inSection(180); |
| pattern = /(abc|)ef/i; |
| string = 'ABCDEF'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('EF', ''); |
| addThis(); |
| |
| status = inSection(181); |
| pattern = /(a|b)c*d/i; |
| string = 'ABCD'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('BCD', 'B'); |
| addThis(); |
| |
| status = inSection(182); |
| pattern = /(ab|ab*)bc/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC', 'A'); |
| addThis(); |
| |
| status = inSection(183); |
| pattern = /a([bc]*)c*/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC', 'BC'); |
| addThis(); |
| |
| status = inSection(184); |
| pattern = /a([bc]*)(c*d)/i; |
| string = 'ABCD'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABCD', 'BC', 'D'); |
| addThis(); |
| |
| status = inSection(185); |
| pattern = /a([bc]+)(c*d)/i; |
| string = 'ABCD'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABCD', 'BC', 'D'); |
| addThis(); |
| |
| status = inSection(186); |
| pattern = /a([bc]*)(c+d)/i; |
| string = 'ABCD'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABCD', 'B', 'CD'); |
| addThis(); |
| |
| status = inSection(187); |
| pattern = /a[bcd]*dcdcde/i; |
| string = 'ADCDCDE'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ADCDCDE'); |
| addThis(); |
| |
| status = inSection(188); |
| pattern = /(ab|a)b*c/i; |
| string = 'ABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABC', 'AB'); |
| addThis(); |
| |
| status = inSection(189); |
| pattern = /((a)(b)c)(d)/i; |
| string = 'ABCD'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABCD', 'ABC', 'A', 'B', 'D'); |
| addThis(); |
| |
| status = inSection(190); |
| pattern = /[a-zA-Z_][a-zA-Z0-9_]*/i; |
| string = 'ALPHA'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ALPHA'); |
| addThis(); |
| |
| status = inSection(191); |
| pattern = /^a(bc+|b[eh])g|.h$/i; |
| string = 'ABH'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('BH', undefined); |
| addThis(); |
| |
| status = inSection(192); |
| pattern = /(bc+d$|ef*g.|h?i(j|k))/i; |
| string = 'EFFGZ'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('EFFGZ', 'EFFGZ', undefined); |
| addThis(); |
| |
| status = inSection(193); |
| pattern = /(bc+d$|ef*g.|h?i(j|k))/i; |
| string = 'IJ'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('IJ', 'IJ', 'J'); |
| addThis(); |
| |
| status = inSection(194); |
| pattern = /(bc+d$|ef*g.|h?i(j|k))/i; |
| string = 'REFFGZ'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('EFFGZ', 'EFFGZ', undefined); |
| addThis(); |
| |
| status = inSection(195); |
| pattern = /((((((((((a))))))))))/i; |
| string = 'A'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'); |
| addThis(); |
| |
| status = inSection(196); |
| pattern = /((((((((((a))))))))))\10/i; |
| string = 'AA'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AA', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'); |
| addThis(); |
| |
| status = inSection(197); |
| pattern = /((((((((((a))))))))))/i; |
| string = 'A!'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'); |
| addThis(); |
| |
| status = inSection(198); |
| pattern = /(((((((((a)))))))))/i; |
| string = 'A'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'); |
| addThis(); |
| |
| status = inSection(199); |
| pattern = /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i; |
| string = 'A'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('A', 'A'); |
| addThis(); |
| |
| status = inSection(200); |
| pattern = /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i; |
| string = 'C'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('C', 'C'); |
| addThis(); |
| |
| status = inSection(201); |
| pattern = /(.*)c(.*)/i; |
| string = 'ABCDE'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABCDE', 'AB', 'DE'); |
| addThis(); |
| |
| status = inSection(202); |
| pattern = /abcd/i; |
| string = 'ABCD'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABCD'); |
| addThis(); |
| |
| status = inSection(203); |
| pattern = /a(bc)d/i; |
| string = 'ABCD'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABCD', 'BC'); |
| addThis(); |
| |
| status = inSection(204); |
| pattern = /a[-]?c/i; |
| string = 'AC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AC'); |
| addThis(); |
| |
| status = inSection(205); |
| pattern = /(abc)\1/i; |
| string = 'ABCABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABCABC', 'ABC'); |
| addThis(); |
| |
| status = inSection(206); |
| pattern = /([a-c]*)\1/i; |
| string = 'ABCABC'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ABCABC', 'ABC'); |
| addThis(); |
| |
| status = inSection(207); |
| pattern = /a(?!b)./; |
| string = 'abad'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ad'); |
| addThis(); |
| |
| status = inSection(208); |
| pattern = /a(?=d)./; |
| string = 'abad'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ad'); |
| addThis(); |
| |
| status = inSection(209); |
| pattern = /a(?=c|d)./; |
| string = 'abad'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ad'); |
| addThis(); |
| |
| status = inSection(210); |
| pattern = /a(?:b|c|d)(.)/; |
| string = 'ace'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ace', 'e'); |
| addThis(); |
| |
| status = inSection(211); |
| pattern = /a(?:b|c|d)*(.)/; |
| string = 'ace'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ace', 'e'); |
| addThis(); |
| |
| status = inSection(212); |
| pattern = /a(?:b|c|d)+?(.)/; |
| string = 'ace'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ace', 'e'); |
| addThis(); |
| |
| status = inSection(213); |
| pattern = /a(?:b|c|d)+?(.)/; |
| string = 'acdbcdbe'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('acd', 'd'); |
| addThis(); |
| |
| status = inSection(214); |
| pattern = /a(?:b|c|d)+(.)/; |
| string = 'acdbcdbe'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('acdbcdbe', 'e'); |
| addThis(); |
| |
| status = inSection(215); |
| pattern = /a(?:b|c|d){2}(.)/; |
| string = 'acdbcdbe'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('acdb', 'b'); |
| addThis(); |
| |
| status = inSection(216); |
| pattern = /a(?:b|c|d){4,5}(.)/; |
| string = 'acdbcdbe'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('acdbcdb', 'b'); |
| addThis(); |
| |
| status = inSection(217); |
| pattern = /a(?:b|c|d){4,5}?(.)/; |
| string = 'acdbcdbe'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('acdbcd', 'd'); |
| addThis(); |
| |
| // MODIFIED - ECMA has different rules for paren contents |
| status = inSection(218); |
| pattern = /((foo)|(bar))*/; |
| string = 'foobar'; |
| actualmatch = string.match(pattern); |
| //expectedmatch = Array('foobar', 'bar', 'foo', 'bar'); |
| expectedmatch = Array('foobar', 'bar', undefined, 'bar'); |
| addThis(); |
| |
| status = inSection(219); |
| pattern = /a(?:b|c|d){6,7}(.)/; |
| string = 'acdbcdbe'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('acdbcdbe', 'e'); |
| addThis(); |
| |
| status = inSection(220); |
| pattern = /a(?:b|c|d){6,7}?(.)/; |
| string = 'acdbcdbe'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('acdbcdbe', 'e'); |
| addThis(); |
| |
| status = inSection(221); |
| pattern = /a(?:b|c|d){5,6}(.)/; |
| string = 'acdbcdbe'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('acdbcdbe', 'e'); |
| addThis(); |
| |
| status = inSection(222); |
| pattern = /a(?:b|c|d){5,6}?(.)/; |
| string = 'acdbcdbe'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('acdbcdb', 'b'); |
| addThis(); |
| |
| status = inSection(223); |
| pattern = /a(?:b|c|d){5,7}(.)/; |
| string = 'acdbcdbe'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('acdbcdbe', 'e'); |
| addThis(); |
| |
| status = inSection(224); |
| pattern = /a(?:b|c|d){5,7}?(.)/; |
| string = 'acdbcdbe'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('acdbcdb', 'b'); |
| addThis(); |
| |
| status = inSection(225); |
| pattern = /a(?:b|(c|e){1,2}?|d)+?(.)/; |
| string = 'ace'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ace', 'c', 'e'); |
| addThis(); |
| |
| status = inSection(226); |
| pattern = /^(.+)?B/; |
| string = 'AB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('AB', 'A'); |
| addThis(); |
| |
| /* MODIFIED - ECMA has different rules for paren contents */ |
| status = inSection(227); |
| pattern = /^([^a-z])|(\^)$/; |
| string = '.'; |
| actualmatch = string.match(pattern); |
| //expectedmatch = Array('.', '.', ''); |
| expectedmatch = Array('.', '.', undefined); |
| addThis(); |
| |
| status = inSection(228); |
| pattern = /^[<>]&/; |
| string = '<&OUT'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('<&'); |
| addThis(); |
| |
| /* Can't refer to a capture before it's encountered & completed |
| status = inSection(229); |
| pattern = /^(a\1?){4}$/; |
| string = 'aaaaaaaaaa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaaaaaaaaa', 'aaaa'); |
| addThis(); |
| |
| status = inSection(230); |
| pattern = /^(a(?(1)\1)){4}$/; |
| string = 'aaaaaaaaaa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaaaaaaaaa', 'aaaa'); |
| addThis(); |
| */ |
| |
| status = inSection(231); |
| pattern = /((a{4})+)/; |
| string = 'aaaaaaaaa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaaaaaaa', 'aaaaaaaa', 'aaaa'); |
| addThis(); |
| |
| status = inSection(232); |
| pattern = /(((aa){2})+)/; |
| string = 'aaaaaaaaaa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaaaaaaa', 'aaaaaaaa', 'aaaa', 'aa'); |
| addThis(); |
| |
| status = inSection(233); |
| pattern = /(((a{2}){2})+)/; |
| string = 'aaaaaaaaaa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaaaaaaa', 'aaaaaaaa', 'aaaa', 'aa'); |
| addThis(); |
| |
| status = inSection(234); |
| pattern = /(?:(f)(o)(o)|(b)(a)(r))*/; |
| string = 'foobar'; |
| actualmatch = string.match(pattern); |
| //expectedmatch = Array('foobar', 'f', 'o', 'o', 'b', 'a', 'r'); |
| expectedmatch = Array('foobar', undefined, undefined, undefined, 'b', 'a', 'r'); |
| addThis(); |
| |
| /* ECMA supports (?: (?= and (?! but doesn't support (?< etc. |
| status = inSection(235); |
| pattern = /(?<=a)b/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('b'); |
| addThis(); |
| |
| status = inSection(236); |
| pattern = /(?<!c)b/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('b'); |
| addThis(); |
| |
| status = inSection(237); |
| pattern = /(?<!c)b/; |
| string = 'b'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('b'); |
| addThis(); |
| |
| status = inSection(238); |
| pattern = /(?<!c)b/; |
| string = 'b'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('b'); |
| addThis(); |
| */ |
| |
| status = inSection(239); |
| pattern = /(?:..)*a/; |
| string = 'aba'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aba'); |
| addThis(); |
| |
| status = inSection(240); |
| pattern = /(?:..)*?a/; |
| string = 'aba'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| /* |
| * MODIFIED - ECMA has different rules for paren contents. Note |
| * this regexp has two non-capturing parens, and one capturing |
| * |
| * The issue: shouldn't the match be ['ab', undefined]? Because the |
| * '\1' matches the undefined value of the second iteration of the '*' |
| * (in which the 'b' part of the '|' matches). But Perl wants ['ab','b']. |
| * |
| * Answer: waldemar@netscape.com: |
| * |
| * The correct answer is ['ab', undefined]. Perl doesn't match |
| * ECMAScript here, and I'd say that Perl is wrong in this case. |
| */ |
| status = inSection(241); |
| pattern = /^(?:b|a(?=(.)))*\1/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| //expectedmatch = Array('ab', 'b'); |
| expectedmatch = Array('ab', undefined); |
| addThis(); |
| |
| status = inSection(242); |
| pattern = /^(){3,5}/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('', ''); |
| addThis(); |
| |
| status = inSection(243); |
| pattern = /^(a+)*ax/; |
| string = 'aax'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aax', 'a'); |
| addThis(); |
| |
| status = inSection(244); |
| pattern = /^((a|b)+)*ax/; |
| string = 'aax'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aax', 'a', 'a'); |
| addThis(); |
| |
| status = inSection(245); |
| pattern = /^((a|bc)+)*ax/; |
| string = 'aax'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aax', 'a', 'a'); |
| addThis(); |
| |
| /* MODIFIED - ECMA has different rules for paren contents */ |
| status = inSection(246); |
| pattern = /(a|x)*ab/; |
| string = 'cab'; |
| actualmatch = string.match(pattern); |
| //expectedmatch = Array('ab', ''); |
| expectedmatch = Array('ab', undefined); |
| addThis(); |
| |
| status = inSection(247); |
| pattern = /(a)*ab/; |
| string = 'cab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab', undefined); |
| addThis(); |
| |
| /* ECMA doesn't support (?imsx or (?-imsx |
| status = inSection(248); |
| pattern = /(?:(?i)a)b/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| status = inSection(249); |
| pattern = /((?i)a)b/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab', 'a'); |
| addThis(); |
| |
| status = inSection(250); |
| pattern = /(?:(?i)a)b/; |
| string = 'Ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('Ab'); |
| addThis(); |
| |
| status = inSection(251); |
| pattern = /((?i)a)b/; |
| string = 'Ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('Ab', 'A'); |
| addThis(); |
| |
| status = inSection(252); |
| pattern = /(?i:a)b/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| status = inSection(253); |
| pattern = /((?i:a))b/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab', 'a'); |
| addThis(); |
| |
| status = inSection(254); |
| pattern = /(?i:a)b/; |
| string = 'Ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('Ab'); |
| addThis(); |
| |
| status = inSection(255); |
| pattern = /((?i:a))b/; |
| string = 'Ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('Ab', 'A'); |
| addThis(); |
| |
| status = inSection(256); |
| pattern = /(?:(?-i)a)b/i; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| status = inSection(257); |
| pattern = /((?-i)a)b/i; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab', 'a'); |
| addThis(); |
| |
| status = inSection(258); |
| pattern = /(?:(?-i)a)b/i; |
| string = 'aB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aB'); |
| addThis(); |
| |
| status = inSection(259); |
| pattern = /((?-i)a)b/i; |
| string = 'aB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aB', 'a'); |
| addThis(); |
| |
| status = inSection(260); |
| pattern = /(?:(?-i)a)b/i; |
| string = 'aB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aB'); |
| addThis(); |
| |
| status = inSection(261); |
| pattern = /((?-i)a)b/i; |
| string = 'aB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aB', 'a'); |
| addThis(); |
| |
| status = inSection(262); |
| pattern = /(?-i:a)b/i; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| status = inSection(263); |
| pattern = /((?-i:a))b/i; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab', 'a'); |
| addThis(); |
| |
| status = inSection(264); |
| pattern = /(?-i:a)b/i; |
| string = 'aB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aB'); |
| addThis(); |
| |
| status = inSection(265); |
| pattern = /((?-i:a))b/i; |
| string = 'aB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aB', 'a'); |
| addThis(); |
| |
| status = inSection(266); |
| pattern = /(?-i:a)b/i; |
| string = 'aB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aB'); |
| addThis(); |
| |
| status = inSection(267); |
| pattern = /((?-i:a))b/i; |
| string = 'aB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aB', 'a'); |
| addThis(); |
| |
| status = inSection(268); |
| pattern = /((?s-i:a.))b/i; |
| string = 'a\nB'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a\nB', 'a\n'); |
| addThis(); |
| */ |
| |
| status = inSection(269); |
| pattern = /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/; |
| string = 'cabbbb'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('cabbbb'); |
| addThis(); |
| |
| status = inSection(270); |
| pattern = /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/; |
| string = 'caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'); |
| addThis(); |
| |
| status = inSection(271); |
| pattern = /(ab)\d\1/i; |
| string = 'Ab4ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('Ab4ab', 'Ab'); |
| addThis(); |
| |
| status = inSection(272); |
| pattern = /(ab)\d\1/i; |
| string = 'ab4Ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab4Ab', 'ab'); |
| addThis(); |
| |
| status = inSection(273); |
| pattern = /foo\w*\d{4}baz/; |
| string = 'foobar1234baz'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('foobar1234baz'); |
| addThis(); |
| |
| status = inSection(274); |
| pattern = /x(~~)*(?:(?:F)?)?/; |
| string = 'x~~'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('x~~', '~~'); |
| addThis(); |
| |
| /* Perl supports (?# but JS doesn't |
| status = inSection(275); |
| pattern = /^a(?#xxx){3}c/; |
| string = 'aaac'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaac'); |
| addThis(); |
| */ |
| |
| /* ECMA doesn't support (?< etc |
| status = inSection(276); |
| pattern = /(?<![cd])[ab]/; |
| string = 'dbaacb'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(277); |
| pattern = /(?<!(c|d))[ab]/; |
| string = 'dbaacb'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(278); |
| pattern = /(?<!cd)[ab]/; |
| string = 'cdaccb'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('b'); |
| addThis(); |
| |
| status = inSection(279); |
| pattern = /((?s)^a(.))((?m)^b$)/; |
| string = 'a\nb\nc\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a\nb', 'a\n', '\n', 'b'); |
| addThis(); |
| |
| status = inSection(280); |
| pattern = /((?m)^b$)/; |
| string = 'a\nb\nc\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('b', 'b'); |
| addThis(); |
| |
| status = inSection(281); |
| pattern = /(?m)^b/; |
| string = 'a\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('b'); |
| addThis(); |
| |
| status = inSection(282); |
| pattern = /(?m)^(b)/; |
| string = 'a\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('b', 'b'); |
| addThis(); |
| |
| status = inSection(283); |
| pattern = /((?m)^b)/; |
| string = 'a\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('b', 'b'); |
| addThis(); |
| |
| status = inSection(284); |
| pattern = /\n((?m)^b)/; |
| string = 'a\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('\nb', 'b'); |
| addThis(); |
| |
| status = inSection(285); |
| pattern = /((?s).)c(?!.)/; |
| string = 'a\nb\nc\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('\nc', '\n'); |
| addThis(); |
| |
| status = inSection(286); |
| pattern = /((?s).)c(?!.)/; |
| string = 'a\nb\nc\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('\nc', '\n'); |
| addThis(); |
| |
| status = inSection(287); |
| pattern = /((?s)b.)c(?!.)/; |
| string = 'a\nb\nc\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('b\nc', 'b\n'); |
| addThis(); |
| |
| status = inSection(288); |
| pattern = /((?s)b.)c(?!.)/; |
| string = 'a\nb\nc\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('b\nc', 'b\n'); |
| addThis(); |
| |
| status = inSection(289); |
| pattern = /((?m)^b)/; |
| string = 'a\nb\nc\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('b', 'b'); |
| addThis(); |
| */ |
| |
| /* ECMA doesn't support (?(condition) |
| status = inSection(290); |
| pattern = /(?(1)b|a)/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(291); |
| pattern = /(x)?(?(1)b|a)/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(292); |
| pattern = /()?(?(1)b|a)/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(293); |
| pattern = /()?(?(1)a|b)/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(294); |
| pattern = /^(\()?blah(?(1)(\)))$/; |
| string = '(blah)'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('(blah)', '(', ')'); |
| addThis(); |
| |
| status = inSection(295); |
| pattern = /^(\()?blah(?(1)(\)))$/; |
| string = 'blah'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('blah'); |
| addThis(); |
| |
| status = inSection(296); |
| pattern = /^(\(+)?blah(?(1)(\)))$/; |
| string = '(blah)'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('(blah)', '(', ')'); |
| addThis(); |
| |
| status = inSection(297); |
| pattern = /^(\(+)?blah(?(1)(\)))$/; |
| string = 'blah'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('blah'); |
| addThis(); |
| |
| status = inSection(298); |
| pattern = /(?(?!a)b|a)/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(299); |
| pattern = /(?(?=a)a|b)/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| */ |
| |
| status = inSection(300); |
| pattern = /(?=(a+?))(\1ab)/; |
| string = 'aaab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aab', 'a', 'aab'); |
| addThis(); |
| |
| status = inSection(301); |
| pattern = /(\w+:)+/; |
| string = 'one:'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('one:', 'one:'); |
| addThis(); |
| |
| /* ECMA doesn't support (?< etc |
| status = inSection(302); |
| pattern = /$(?<=^(a))/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('', 'a'); |
| addThis(); |
| */ |
| |
| status = inSection(303); |
| pattern = /(?=(a+?))(\1ab)/; |
| string = 'aaab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aab', 'a', 'aab'); |
| addThis(); |
| |
| /* MODIFIED - ECMA has different rules for paren contents */ |
| status = inSection(304); |
| pattern = /([\w:]+::)?(\w+)$/; |
| string = 'abcd'; |
| actualmatch = string.match(pattern); |
| //expectedmatch = Array('abcd', '', 'abcd'); |
| expectedmatch = Array('abcd', undefined, 'abcd'); |
| addThis(); |
| |
| status = inSection(305); |
| pattern = /([\w:]+::)?(\w+)$/; |
| string = 'xy:z:::abcd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('xy:z:::abcd', 'xy:z:::', 'abcd'); |
| addThis(); |
| |
| status = inSection(306); |
| pattern = /^[^bcd]*(c+)/; |
| string = 'aexycd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aexyc', 'c'); |
| addThis(); |
| |
| status = inSection(307); |
| pattern = /(a*)b+/; |
| string = 'caab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aab', 'aa'); |
| addThis(); |
| |
| /* MODIFIED - ECMA has different rules for paren contents */ |
| status = inSection(308); |
| pattern = /([\w:]+::)?(\w+)$/; |
| string = 'abcd'; |
| actualmatch = string.match(pattern); |
| //expectedmatch = Array('abcd', '', 'abcd'); |
| expectedmatch = Array('abcd', undefined, 'abcd'); |
| addThis(); |
| |
| status = inSection(309); |
| pattern = /([\w:]+::)?(\w+)$/; |
| string = 'xy:z:::abcd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('xy:z:::abcd', 'xy:z:::', 'abcd'); |
| addThis(); |
| |
| status = inSection(310); |
| pattern = /^[^bcd]*(c+)/; |
| string = 'aexycd'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aexyc', 'c'); |
| addThis(); |
| |
| /* ECMA doesn't support (?> |
| status = inSection(311); |
| pattern = /(?>a+)b/; |
| string = 'aaab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaab'); |
| addThis(); |
| */ |
| |
| status = inSection(312); |
| pattern = /([[:]+)/; |
| string = 'a:[b]:'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(':[', ':['); |
| addThis(); |
| |
| status = inSection(313); |
| pattern = /([[=]+)/; |
| string = 'a=[b]='; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('=[', '=['); |
| addThis(); |
| |
| status = inSection(314); |
| pattern = /([[.]+)/; |
| string = 'a.[b].'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('.[', '.['); |
| addThis(); |
| |
| /* ECMA doesn't have rules for [: |
| status = inSection(315); |
| pattern = /[a[:]b[:c]/; |
| string = 'abc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc'); |
| addThis(); |
| */ |
| |
| /* ECMA doesn't support (?> |
| status = inSection(316); |
| pattern = /((?>a+)b)/; |
| string = 'aaab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaab', 'aaab'); |
| addThis(); |
| |
| status = inSection(317); |
| pattern = /(?>(a+))b/; |
| string = 'aaab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaab', 'aaa'); |
| addThis(); |
| |
| status = inSection(318); |
| pattern = /((?>[^()]+)|\([^()]*\))+/; |
| string = '((abc(ade)ufh()()x'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abc(ade)ufh()()x', 'x'); |
| addThis(); |
| */ |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(319); |
| pattern = /\Z/; |
| string = 'a\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| status = inSection(320); |
| pattern = /\z/; |
| string = 'a\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| */ |
| |
| status = inSection(321); |
| pattern = /$/; |
| string = 'a\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(322); |
| pattern = /\Z/; |
| string = 'b\na\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| status = inSection(323); |
| pattern = /\z/; |
| string = 'b\na\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| */ |
| |
| status = inSection(324); |
| pattern = /$/; |
| string = 'b\na\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(325); |
| pattern = /\Z/; |
| string = 'b\na'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| status = inSection(326); |
| pattern = /\z/; |
| string = 'b\na'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| */ |
| |
| status = inSection(327); |
| pattern = /$/; |
| string = 'b\na'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(328); |
| pattern = /\Z/m; |
| string = 'a\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| status = inSection(329); |
| pattern = /\z/m; |
| string = 'a\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| */ |
| |
| status = inSection(330); |
| pattern = /$/m; |
| string = 'a\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(331); |
| pattern = /\Z/m; |
| string = 'b\na\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| status = inSection(332); |
| pattern = /\z/m; |
| string = 'b\na\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| */ |
| |
| status = inSection(333); |
| pattern = /$/m; |
| string = 'b\na\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(334); |
| pattern = /\Z/m; |
| string = 'b\na'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| status = inSection(335); |
| pattern = /\z/m; |
| string = 'b\na'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| */ |
| |
| status = inSection(336); |
| pattern = /$/m; |
| string = 'b\na'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array(''); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(337); |
| pattern = /a\Z/; |
| string = 'b\na\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| */ |
| |
| /* $ only matches end of input unless multiline |
| status = inSection(338); |
| pattern = /a$/; |
| string = 'b\na\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| */ |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(339); |
| pattern = /a\Z/; |
| string = 'b\na'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(340); |
| pattern = /a\z/; |
| string = 'b\na'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| */ |
| |
| status = inSection(341); |
| pattern = /a$/; |
| string = 'b\na'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(342); |
| pattern = /a$/m; |
| string = 'a\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(343); |
| pattern = /a\Z/m; |
| string = 'b\na\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| */ |
| |
| status = inSection(344); |
| pattern = /a$/m; |
| string = 'b\na\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(345); |
| pattern = /a\Z/m; |
| string = 'b\na'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| status = inSection(346); |
| pattern = /a\z/m; |
| string = 'b\na'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| */ |
| |
| status = inSection(347); |
| pattern = /a$/m; |
| string = 'b\na'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a'); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(348); |
| pattern = /aa\Z/; |
| string = 'b\naa\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aa'); |
| addThis(); |
| */ |
| |
| /* $ only matches end of input unless multiline |
| status = inSection(349); |
| pattern = /aa$/; |
| string = 'b\naa\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aa'); |
| addThis(); |
| */ |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(350); |
| pattern = /aa\Z/; |
| string = 'b\naa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aa'); |
| addThis(); |
| |
| status = inSection(351); |
| pattern = /aa\z/; |
| string = 'b\naa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aa'); |
| addThis(); |
| */ |
| |
| status = inSection(352); |
| pattern = /aa$/; |
| string = 'b\naa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aa'); |
| addThis(); |
| |
| status = inSection(353); |
| pattern = /aa$/m; |
| string = 'aa\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aa'); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(354); |
| pattern = /aa\Z/m; |
| string = 'b\naa\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aa'); |
| addThis(); |
| */ |
| |
| status = inSection(355); |
| pattern = /aa$/m; |
| string = 'b\naa\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aa'); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(356); |
| pattern = /aa\Z/m; |
| string = 'b\naa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aa'); |
| addThis(); |
| |
| status = inSection(357); |
| pattern = /aa\z/m; |
| string = 'b\naa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aa'); |
| addThis(); |
| */ |
| |
| status = inSection(358); |
| pattern = /aa$/m; |
| string = 'b\naa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aa'); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(359); |
| pattern = /ab\Z/; |
| string = 'b\nab\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| */ |
| |
| /* $ only matches end of input unless multiline |
| status = inSection(360); |
| pattern = /ab$/; |
| string = 'b\nab\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| */ |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(361); |
| pattern = /ab\Z/; |
| string = 'b\nab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| status = inSection(362); |
| pattern = /ab\z/; |
| string = 'b\nab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| */ |
| |
| status = inSection(363); |
| pattern = /ab$/; |
| string = 'b\nab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| status = inSection(364); |
| pattern = /ab$/m; |
| string = 'ab\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(365); |
| pattern = /ab\Z/m; |
| string = 'b\nab\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| */ |
| |
| status = inSection(366); |
| pattern = /ab$/m; |
| string = 'b\nab\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(367); |
| pattern = /ab\Z/m; |
| string = 'b\nab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| status = inSection(368); |
| pattern = /ab\z/m; |
| string = 'b\nab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| */ |
| |
| status = inSection(369); |
| pattern = /ab$/m; |
| string = 'b\nab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab'); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(370); |
| pattern = /abb\Z/; |
| string = 'b\nabb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abb'); |
| addThis(); |
| */ |
| |
| /* $ only matches end of input unless multiline |
| status = inSection(371); |
| pattern = /abb$/; |
| string = 'b\nabb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abb'); |
| addThis(); |
| */ |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(372); |
| pattern = /abb\Z/; |
| string = 'b\nabb'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abb'); |
| addThis(); |
| |
| status = inSection(373); |
| pattern = /abb\z/; |
| string = 'b\nabb'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abb'); |
| addThis(); |
| */ |
| |
| status = inSection(374); |
| pattern = /abb$/; |
| string = 'b\nabb'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abb'); |
| addThis(); |
| |
| status = inSection(375); |
| pattern = /abb$/m; |
| string = 'abb\nb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abb'); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(376); |
| pattern = /abb\Z/m; |
| string = 'b\nabb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abb'); |
| addThis(); |
| */ |
| |
| status = inSection(377); |
| pattern = /abb$/m; |
| string = 'b\nabb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abb'); |
| addThis(); |
| |
| /* Perl has \Z has end-of-line, ECMA doesn't |
| status = inSection(378); |
| pattern = /abb\Z/m; |
| string = 'b\nabb'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abb'); |
| addThis(); |
| |
| status = inSection(379); |
| pattern = /abb\z/m; |
| string = 'b\nabb'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abb'); |
| addThis(); |
| */ |
| |
| status = inSection(380); |
| pattern = /abb$/m; |
| string = 'b\nabb'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abb'); |
| addThis(); |
| |
| status = inSection(381); |
| pattern = /(^|x)(c)/; |
| string = 'ca'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('c', '', 'c'); |
| addThis(); |
| |
| status = inSection(382); |
| pattern = /foo.bart/; |
| string = 'foo.bart'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('foo.bart'); |
| addThis(); |
| |
| status = inSection(383); |
| pattern = /^d[x][x][x]/m; |
| string = 'abcd\ndxxx'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('dxxx'); |
| addThis(); |
| |
| status = inSection(384); |
| pattern = /tt+$/; |
| string = 'xxxtt'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('tt'); |
| addThis(); |
| |
| /* ECMA spec says that each atom in a range must be a single character |
| status = inSection(385); |
| pattern = /([a-\d]+)/; |
| string = 'za-9z'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('9', '9'); |
| addThis(); |
| |
| status = inSection(386); |
| pattern = /([\d-z]+)/; |
| string = 'a0-za'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('0-z', '0-z'); |
| addThis(); |
| */ |
| |
| /* ECMA doesn't support [: |
| status = inSection(387); |
| pattern = /([a-[:digit:]]+)/; |
| string = 'za-9z'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a-9', 'a-9'); |
| addThis(); |
| |
| status = inSection(388); |
| pattern = /([[:digit:]-z]+)/; |
| string = '=0-z='; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('0-z', '0-z'); |
| addThis(); |
| |
| status = inSection(389); |
| pattern = /([[:digit:]-[:alpha:]]+)/; |
| string = '=0-z='; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('0-z', '0-z'); |
| addThis(); |
| */ |
| |
| status = inSection(390); |
| pattern = /(\d+\.\d+)/; |
| string = '3.1415926'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('3.1415926', '3.1415926'); |
| addThis(); |
| |
| status = inSection(391); |
| pattern = /\.c(pp|xx|c)?$/i; |
| string = 'IO.c'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('.c', undefined); |
| addThis(); |
| |
| status = inSection(392); |
| pattern = /(\.c(pp|xx|c)?$)/i; |
| string = 'IO.c'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('.c', '.c', undefined); |
| addThis(); |
| |
| status = inSection(393); |
| pattern = /(^|a)b/; |
| string = 'ab'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('ab', 'a'); |
| addThis(); |
| |
| status = inSection(394); |
| pattern = /^([ab]*?)(b)?(c)$/; |
| string = 'abac'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abac', 'aba', undefined, 'c'); |
| addThis(); |
| |
| status = inSection(395); |
| pattern = /^(?:.,){2}c/i; |
| string = 'a,b,c'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a,b,c'); |
| addThis(); |
| |
| status = inSection(396); |
| pattern = /^(.,){2}c/i; |
| string = 'a,b,c'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a,b,c', 'b,'); |
| addThis(); |
| |
| status = inSection(397); |
| pattern = /^(?:[^,]*,){2}c/; |
| string = 'a,b,c'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a,b,c'); |
| addThis(); |
| |
| status = inSection(398); |
| pattern = /^([^,]*,){2}c/; |
| string = 'a,b,c'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a,b,c', 'b,'); |
| addThis(); |
| |
| status = inSection(399); |
| pattern = /^([^,]*,){3}d/; |
| string = 'aaa,b,c,d'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaa,b,c,d', 'c,'); |
| addThis(); |
| |
| status = inSection(400); |
| pattern = /^([^,]*,){3,}d/; |
| string = 'aaa,b,c,d'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaa,b,c,d', 'c,'); |
| addThis(); |
| |
| status = inSection(401); |
| pattern = /^([^,]*,){0,3}d/; |
| string = 'aaa,b,c,d'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaa,b,c,d', 'c,'); |
| addThis(); |
| |
| status = inSection(402); |
| pattern = /^([^,]{1,3},){3}d/i; |
| string = 'aaa,b,c,d'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaa,b,c,d', 'c,'); |
| addThis(); |
| |
| status = inSection(403); |
| pattern = /^([^,]{1,3},){3,}d/; |
| string = 'aaa,b,c,d'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaa,b,c,d', 'c,'); |
| addThis(); |
| |
| status = inSection(404); |
| pattern = /^([^,]{1,3},){0,3}d/; |
| string = 'aaa,b,c,d'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaa,b,c,d', 'c,'); |
| addThis(); |
| |
| status = inSection(405); |
| pattern = /^([^,]{1,},){3}d/; |
| string = 'aaa,b,c,d'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaa,b,c,d', 'c,'); |
| addThis(); |
| |
| status = inSection(406); |
| pattern = /^([^,]{1,},){3,}d/; |
| string = 'aaa,b,c,d'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaa,b,c,d', 'c,'); |
| addThis(); |
| |
| status = inSection(407); |
| pattern = /^([^,]{1,},){0,3}d/; |
| string = 'aaa,b,c,d'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaa,b,c,d', 'c,'); |
| addThis(); |
| |
| status = inSection(408); |
| pattern = /^([^,]{0,3},){3}d/i; |
| string = 'aaa,b,c,d'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaa,b,c,d', 'c,'); |
| addThis(); |
| |
| status = inSection(409); |
| pattern = /^([^,]{0,3},){3,}d/; |
| string = 'aaa,b,c,d'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaa,b,c,d', 'c,'); |
| addThis(); |
| |
| status = inSection(410); |
| pattern = /^([^,]{0,3},){0,3}d/; |
| string = 'aaa,b,c,d'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaa,b,c,d', 'c,'); |
| addThis(); |
| |
| /* ECMA doesn't support \A |
| status = inSection(411); |
| pattern = /(?!\A)x/m; |
| string = 'a\nxb\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('\n'); |
| addThis(); |
| */ |
| |
| status = inSection(412); |
| pattern = /^(a(b)?)+$/; |
| string = 'aba'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aba', 'a', undefined); |
| addThis(); |
| |
| status = inSection(413); |
| pattern = /^(aa(bb)?)+$/; |
| string = 'aabbaa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aabbaa', 'aa', undefined); |
| addThis(); |
| |
| status = inSection(414); |
| pattern = /^.{9}abc.*\n/m; |
| string = '123\nabcabcabcabc\n'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('abcabcabcabc\n'); |
| addThis(); |
| |
| status = inSection(415); |
| pattern = /^(a)?a$/; |
| string = 'a'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('a', undefined); |
| addThis(); |
| |
| status = inSection(416); |
| pattern = /^(a\1?)(a\1?)(a\2?)(a\3?)$/; |
| string = 'aaaaaa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaaaaa', 'a', 'aa', 'a', 'aa'); |
| addThis(); |
| |
| /* Can't refer to a capture before it's encountered & completed |
| status = inSection(417); |
| pattern = /^(a\1?){4}$/; |
| string = 'aaaaaa'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaaaaa', 'aaa'); |
| addThis(); |
| */ |
| |
| status = inSection(418); |
| pattern = /^(0+)?(?:x(1))?/; |
| string = 'x1'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('x1', undefined, '1'); |
| addThis(); |
| |
| status = inSection(419); |
| pattern = /^([0-9a-fA-F]+)(?:x([0-9a-fA-F]+)?)(?:x([0-9a-fA-F]+))?/; |
| string = '012cxx0190'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('012cxx0190', '012c', undefined, '0190'); |
| addThis(); |
| |
| status = inSection(420); |
| pattern = /^(b+?|a){1,2}c/; |
| string = 'bbbac'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('bbbac', 'a'); |
| addThis(); |
| |
| status = inSection(421); |
| pattern = /^(b+?|a){1,2}c/; |
| string = 'bbbbac'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('bbbbac', 'a'); |
| addThis(); |
| |
| status = inSection(422); |
| pattern = /((?:aaaa|bbbb)cccc)?/; |
| string = 'aaaacccc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('aaaacccc', 'aaaacccc'); |
| addThis(); |
| |
| status = inSection(423); |
| pattern = /((?:aaaa|bbbb)cccc)?/; |
| string = 'bbbbcccc'; |
| actualmatch = string.match(pattern); |
| expectedmatch = Array('bbbbcccc', 'bbbbcccc'); |
| addThis(); |
| |
| |
| |
| |
| //----------------------------------------------------------------------------- |
| test(); |
| //----------------------------------------------------------------------------- |
| |
| |
| |
| function addThis() |
| { |
| if(omitCurrentSection()) |
| return; |
| |
| statusmessages[i] = status; |
| patterns[i] = pattern; |
| strings[i] = string; |
| actualmatches[i] = actualmatch; |
| expectedmatches[i] = expectedmatch; |
| i++; |
| } |
| |
| |
| function omitCurrentSection() |
| { |
| try |
| { |
| // current section number is in global status variable |
| var n = status.match(/(\d+)/)[1]; |
| return ((n < cnLBOUND) || (n > cnUBOUND)); |
| } |
| catch(e) |
| { |
| return false; |
| } |
| } |
| |
| |
| function test() |
| { |
| enterFunc ('test'); |
| printBugNumber (bug); |
| printStatus (summary); |
| testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches); |
| exitFunc ('test'); |
| } |