regex1.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. function write(v) { WScript.Echo(v + ""); }
  6. var groups = {};
  7. function Assert(condition, category)
  8. {
  9. if (!groups[category]) {
  10. groups[category] = 1;
  11. } else {
  12. groups[category]++;
  13. }
  14. if (!condition) {
  15. write(category + " test " + groups[category] + " failed");
  16. } else {
  17. write(category + " test " + groups[category] + " passed");
  18. }
  19. }
  20. write("regex test1");
  21. var re = /a/;
  22. var str = new String("abcda");
  23. if (re.test(str)) {
  24. write(" regex.test pass");
  25. }
  26. else {
  27. write(" regex.test fail");
  28. }
  29. if (str.match(re)) {
  30. write(" string.match pass");
  31. }
  32. else {
  33. write(" string.match fail");
  34. }
  35. var array = re.exec(str);
  36. write(" string.exec : " + array);
  37. var s = "";
  38. var a = s.split(/\s+/);
  39. write("a.length : " + a.length);
  40. write("a[0]:" + a[0]);
  41. var reTemp = /abc/i;
  42. var re = new RegExp(reTemp, "g");
  43. var tmp = "abcdef".replace(re, "");
  44. Assert(re.lastIndex == 0, "lastIndex");
  45. var re = new RegExp(/abc/i, "g");
  46. var tmp = "abcdef".match(re);
  47. Assert(re.lastIndex == 0, "lastIndex");
  48. var re = new RegExp(/abc/g);
  49. re.exec("abcdef");
  50. Assert(re.lastIndex == 3, "lastIndex");
  51. var re = /abc/;
  52. re.exec("abcdef");
  53. Assert(re.lastIndex == 0, "lastIndex");
  54. var re = new RegExp(/abc/g, "i");
  55. Assert(re.global == false, "global");
  56. Assert(re.ignoreCase == true, "ignoreCase");
  57. var re = /abc/i;
  58. var re1 = new RegExp(re, "gm");
  59. Assert(re.global == false, "global");
  60. Assert(re.multiline == false, "multiline");
  61. Assert(re.ignoreCase == true, "ignoreCase");
  62. Assert(re1.global == true, "global");
  63. Assert(re1.multiline == true, "multiline");
  64. Assert(re1.ignoreCase == false, "ignoreCase");
  65. var exceptionThrown = false;
  66. try
  67. {
  68. var re = new RegExp(/a/g, "ab");
  69. }
  70. catch (ex)
  71. {
  72. exceptionThrown = true;
  73. }
  74. Assert(exceptionThrown, "invalid flags");
  75. var re = /(ab)/g
  76. "abc ".match(re);
  77. Assert(RegExp.$1 == "ab", "lastIndex");
  78. var re = /test/;
  79. var exceptionThrown = false;
  80. try
  81. {
  82. re.lastIndex = { toString: function() { throw "an exception string"; } }
  83. }
  84. catch (ex)
  85. {
  86. exceptionThrown = true;
  87. }
  88. Assert(exceptionThrown == false, "lastIndex");
  89. exceptionThrown = false;
  90. try
  91. {
  92. Write("LastIndex is " + re.lastIndex);
  93. }
  94. catch (ex)
  95. {
  96. exceptionThrown = true;
  97. }
  98. Assert(exceptionThrown == true, "lastIndex");
  99. function testsc(r, s) {
  100. if (!r.test(s))
  101. write("invalid interpretation of '" + r + "'");
  102. }
  103. testsc(/^\cA$/, "\x01");
  104. testsc(/^[\cA]$/, "\x01");
  105. testsc(/^\c1$/, "\\c1");
  106. testsc(/^\c$/, "\\c");
  107. testsc(/\c/, "\\c");
  108. testsc(/^\c\1$/, "\\c\x01");
  109. testsc(/\c/, "\\c");
  110. testsc(/^[\c1]$/, "\x11");
  111. testsc(/^[\c]$/, "c");
  112. testsc(/^[\c]]$/, "c]");
  113. testsc(/^[\c-e]+$/, "cde");
  114. //Octal handling
  115. testsc(/^\777$/, "\x3F7");
  116. testsc(/^\777$/, "\777");
  117. testsc(/^\170$/, "x");
  118. //Octal handling test for values > 127
  119. c=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"];
  120. //Negation of empty char set [^] test
  121. write("aa".match(/([^])(\1)/));