regex-w-sharp-s-kelvin-sign.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. var reWordChar = /\w/;
  6. var reNonWordChar = /\W/;
  7. var reWordCharI = /\w/i;
  8. var reNonWordCharI = /\W/i;
  9. var reWordCharU = /\w/u;
  10. var reNonWordCharU = /\W/u;
  11. var reWordCharIU = /\w/iu;
  12. var reNonWordCharIU = /\W/iu;
  13. var reWordCharName = "word-char";
  14. var reNonWordCharName = "NON-word-char";
  15. basic_tests = [
  16. 's', 'S', 'k', 'K'
  17. ];
  18. basic_tests_names = ['lowercase s', 'uppercase S', 'lowercase k', 'uppercase K'];
  19. u_tests = [
  20. '\u017F', // Sharp S
  21. '\u212A', // Kelvin sign
  22. ];
  23. u_tests_names = ['Sharp S', 'Kelvin sign'];
  24. function assert(a, msg) {
  25. if (!a) {
  26. console.log("FAIL: " + msg);
  27. }
  28. }
  29. function assertMatch(regex, reName, string, name) {
  30. var b = regex.test(string);
  31. var msg = "" + regex + " " + reName + " should match '" + string + "' (" + name + ")";
  32. assert(b, msg);
  33. }
  34. function assertNonMatch(regex, reName, string, name) {
  35. var b = !regex.test(string);
  36. var msg = "" + regex + " " + reName + " should not match '" + string + "' (" + name + ")";
  37. assert(b, msg);
  38. }
  39. for (i in basic_tests) {
  40. assertMatch(reWordChar, reWordCharName, basic_tests[i], basic_tests_names[i]);
  41. assertMatch(reWordCharI, reWordCharName, basic_tests[i], basic_tests_names[i]);
  42. assertMatch(reWordCharU, reWordCharName, basic_tests[i], basic_tests_names[i]);
  43. assertMatch(reWordCharIU, reWordCharName, basic_tests[i], basic_tests_names[i]);
  44. assertNonMatch(reNonWordChar, reNonWordCharName, basic_tests[i], basic_tests_names[i]);
  45. assertNonMatch(reNonWordCharI, reNonWordCharName, basic_tests[i], basic_tests_names[i]);
  46. assertNonMatch(reNonWordCharU, reNonWordCharName, basic_tests[i], basic_tests_names[i]);
  47. assertNonMatch(reNonWordCharIU, reNonWordCharName, basic_tests[i], basic_tests_names[i]);
  48. }
  49. for (i in u_tests) {
  50. assertNonMatch(reWordChar, reWordCharName, u_tests[i], u_tests_names[i]);
  51. assertNonMatch(reWordCharI, reWordCharName, u_tests[i], u_tests_names[i]);
  52. assertNonMatch(reWordCharU, reWordCharName, u_tests[i], u_tests_names[i]);
  53. assertMatch(reWordCharIU, reWordCharName, u_tests[i], u_tests_names[i]);
  54. assertMatch(reNonWordChar, reWordCharName, u_tests[i], u_tests_names[i]);
  55. assertMatch(reNonWordCharI, reNonWordCharName, u_tests[i], u_tests_names[i]);
  56. assertMatch(reNonWordCharU, reWordCharName, u_tests[i], u_tests_names[i]);
  57. assertNonMatch(reNonWordCharIU, reNonWordCharName, u_tests[i], u_tests_names[i]);
  58. }
  59. console.log("PASS");