84 lines
3.7 KiB
JavaScript
84 lines
3.7 KiB
JavaScript
description(
|
|
'Test for of RegExp Unicode properties'
|
|
);
|
|
|
|
let src1 = ""
|
|
for (let c = 1; c <= 0x7f; c++)
|
|
src1 += String.fromCharCode(c);
|
|
let re1 = new RegExp("\\p{ASCII}*", "u")
|
|
var matchResult1 = src1.match(re1);
|
|
shouldBe('matchResult1[0]', 'src1');
|
|
|
|
let src2 = "p{Any-Old-Property}";
|
|
let re2 = /\p{Any-Old-Property}/;
|
|
shouldBeTrue('re2.test(src2)');
|
|
|
|
shouldThrow('/\\p{Any-Old-Property}/u.test(src2)', '"SyntaxError: Invalid regular expression: invalid property expression"');
|
|
shouldThrow('/\\p{Script=Hebrew/u.test("Testing")', '"SyntaxError: Invalid regular expression: invalid property expression"');
|
|
shouldThrow('/\\p{Hebrew/u.test("Testing")', '"SyntaxError: Invalid regular expression: invalid property expression"');
|
|
shouldThrow('/\\p{Hebrew}/u.test("Testing")', '"SyntaxError: Invalid regular expression: invalid property expression"');
|
|
shouldThrow('/\\p{Letter/u.test("Testing")', '"SyntaxError: Invalid regular expression: invalid property expression"');
|
|
shouldThrow('/\\p{Cc/u.test("Testing")', '"SyntaxError: Invalid regular expression: invalid property expression"');
|
|
|
|
let src3 = "DeadBeef4A11";
|
|
let re3a = /\p{ASCII_Hex_Digit}*/u;
|
|
shouldBe('src3.match(re3a)[0]', 'src3');
|
|
let re3b = /\p{AHex}*/u;
|
|
shouldBe('src3.match(re3b)[0]', 'src3');
|
|
|
|
let src4 = "The Rain In Spain Falls Mainly on THE Plains.";
|
|
let re4a = /\p{General_Category=Uppercase_Letter}/ug;
|
|
let exp4 = ["T", "R", "I", "S", "F", "M", "T", "H", "E", "P"];
|
|
shouldBe('src4.match(re4a)', 'exp4');
|
|
let re4c = /\p{General_Category=Lu}/ug;
|
|
shouldBe('src4.match(re4c)', 'exp4');
|
|
let re4d = /\p{gc=Lu}/ug;
|
|
shouldBe('src4.match(re4d)', 'exp4');
|
|
let re4e = /\p{Uppercase_Letter}/ug;
|
|
shouldBe('src4.match(re4e)', 'exp4');
|
|
let re4f = /\p{Lu}/ug;
|
|
shouldBe('src4.match(re4f)', 'exp4');
|
|
|
|
let src5 = "SOME LOWER CASE: abdudtrj\u017f\u00ba\u2147\ua739\u{118c4}";
|
|
let re5a = /\p{Lowercase}+/u;
|
|
shouldBe('src5.match(re5a)[0]', '"abdudtrj\u017f\u00ba\u2147\ua739\u{118c4}"');
|
|
let re5b = /\p{Lowercase_Letter}+/u;
|
|
shouldBe('src5.match(re5b)[0]', '"abdudtrj\u017f"');
|
|
let re5c = /\P{Lowercase_Letter}+/u;
|
|
shouldBe('src5.match(re5c)[0]', '"SOME LOWER CASE: "');
|
|
|
|
let src6 = "The Greek word \u03bb\u03cc\u03b3\u03bf\u03c2 means \"reason\".";
|
|
let re6a = /\p{Script_Extensions=Grek}+/u;
|
|
shouldBe('re6a.exec(src6)[0]', '"\u03bb\u03cc\u03b3\u03bf\u03c2"');
|
|
let re6b = /\P{Script_Extensions=Grek}+/u;
|
|
shouldBe('re6b.exec(src6)[0]', '"The Greek word "');
|
|
let re6c = /[ \p{Script=Latin}\p{Script_Extensions=Grek}]+/u;
|
|
shouldBe('re6c.exec(src6)[0]', '"The Greek word \u03bb\u03cc\u03b3\u03bf\u03c2 means "');
|
|
|
|
let src7a = "2 + 2 = 4";
|
|
let re7a = /\p{Math}/u;
|
|
shouldBe('re7a.exec(src7a)[0]', '"+"');
|
|
let re7b = /[\p{Math}]+/u;
|
|
shouldBe('re7b.exec(src7a)[0]', '"+"');
|
|
let re7c = /[\p{Number}\p{Math}]+/u;
|
|
shouldBe('re7c.exec(src7a)[0]', '"2"');
|
|
let re7d = /[\p{Number}\p{Math}\p{space}]+/u;
|
|
shouldBe('re7d.exec(src7a)[0]', '"2 + 2 = 4"');
|
|
let src7b = "2 ^ .5 = 1.4142135";
|
|
shouldBe('re7d.exec(src7b)[0]', '"2 ^ "');
|
|
let re7e = /[\p{Number}\p{Math}\p{space}\.]+/u;
|
|
shouldBe('re7e.exec(src7b)[0]', '"2 ^ .5 = 1.4142135"');
|
|
let src7c = "2 \u00f7 3 = ~0.666666";
|
|
shouldBe('re7e.exec(src7c)[0]', '"2 \u00f7 3 = ~0.666666"');
|
|
let re7f = /[\p{N}\{No}\p{Math}\p{space}\.]+/u;
|
|
let src7d = "5\u00b3 + 3\u00b2 = 134";
|
|
shouldBe('re7f.exec(src7d)[0]', '"5\u00b3 + 3\u00b2 = 134"');
|
|
let re7g = /[\p{Math}]+/ug;
|
|
shouldBe('src7d.match(re7g)', '["+", "="]');
|
|
|
|
let src8 = "Hello is \u0bb5\u0ba3\u0b95\u0bcd\u0b95\u0bae\u0bcd in Tamil";
|
|
let re8a = /[\p{Script_Extensions=Taml}]+/u;
|
|
shouldBe('re8a.exec(src8)[0]', '"\u0bb5\u0ba3\u0b95\u0bcd\u0b95\u0bae\u0bcd"');
|
|
let re8b = /[\p{Script_Extensions=Latn}\p{Script_Extensions=Taml} ]+/u;
|
|
shouldBe('re8b.exec(src8)[0]', '"Hello is \u0bb5\u0ba3\u0b95\u0bcd\u0b95\u0bae\u0bcd in Tamil"');
|