| //------------------------------------------------------------------------------------------------------- | |
| // Copyright (C) Microsoft. All rights reserved. | |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. | |
| //------------------------------------------------------------------------------------------------------- | |
| // Test of regex captures with some examples motivated by WAC. | |
| WScript.Echo(/(ab)|(ac)/.exec("aabc")); | |
| WScript.Echo(/(ab)|(ac)+/.exec("qacbacacd")); | |
| WScript.Echo(/(ab)+|(ac)+/.exec("qababacacd")); | |
| WScript.Echo(/(?:ab)+|(ac)+/.exec("qababacacd")); | |
| WScript.Echo(/(?:ab)+|(?:ac)+/.exec("qababacacd")); | |
| var a = new RegExp('^([^?]+)'); | |
| var a1 = a.exec("file://d:\\foo.txt"); | |
| WScript.Echo(a1); | |
| var b = new RegExp('^([a-z+.-]+://(?:[^/]*/)*)[^/]*$'); | |
| var b1 = b.exec("file://d:\\foo.txt"); | |
| WScript.Echo(b1); | |
| var c = b.exec(a.exec("file://d:\\foo.txt")[1])[1]; | |
| WScript.Echo(c); | |
| var http = "http://ezedev/WAC/onenoteframe.aspx?Fi=c%3A%5CViewingData%5Cbasefile%5CTest&H=ol&C=0__ezedev&ui=en-US"; | |
| WScript.Echo(a.exec(http)); | |
| WScript.Echo(b.exec(a.exec(http)[1])); | |
| var d = b.exec(a.exec(http)[1])[1]; | |
| WScript.Echo(d); | |
| var d = 'foo bar'.replace(/(foo)|(bar)/g, '[$1$2]'); | |
| WScript.Echo(d+""); | |
| var e = "ab".replace(/(.)(.){0}/,'$1$2'); | |
| WScript.Echo(e+""); | |
| var groups = {}; | |
| function Assert(actual, expected, category, notStrict) | |
| { | |
| if (!groups[category]) { | |
| groups[category] = 1; | |
| } else { | |
| groups[category]++; | |
| } | |
| var condition = (actual === expected); | |
| if (!!notStrict) { | |
| condition = (actual == expected) | |
| } | |
| if (!condition) { | |
| WScript.Echo(category + " test " + groups[category] + " failed. Expected: " + expected + ", Actual: " + actual); | |
| } else { | |
| WScript.Echo(category + " test " + groups[category] + " passed"); | |
| } | |
| } | |
| var needle = /(bc)/; | |
| var haystack = "abcdef"; | |
| haystack.match(needle); | |
| Assert(RegExp.$1, "bc", "numberedRegex", true); | |
| Assert(RegExp.$2, "", "numberedRegex"); | |
| needle = /xy/; | |
| haystack.match(needle); | |
| Assert(RegExp.$1, "bc", "numberedRegex"); | |
| Assert(RegExp.$2, "", "numberedRegex"); |