Skip to content

Commit 8d2989b

Browse files
committed
Add support for regex format
1 parent c42571e commit 8d2989b

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

formats/formats-test-suite.spec.ts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@ type Test = {
2525
};
2626

2727
const skip = new Set<string>([
28-
// Not supported
29-
"|draft2020-12|ecmascript-regex.json",
30-
"|draft2019-09|ecmascript-regex.json",
31-
"|draft7|ecmascript-regex.json",
32-
3328
// Not supported
3429
"|draft2020-12|email.json",
3530
"|draft2019-09|email.json",
@@ -60,11 +55,6 @@ const skip = new Set<string>([
6055
"|draft7|json-pointer.json",
6156
"|draft6|json-pointer.json",
6257

63-
// Not supported
64-
"|draft2020-12|regex.json",
65-
"|draft2019-09|regex.json",
66-
"|draft7|regex.json",
67-
6858
// Not supported
6959
"|draft2020-12|relative-json-pointer.json",
7060
"|draft2019-09|relative-json-pointer.json",

formats/handlers/regex.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
export default {
2+
id: "https://json-schema.org/format/regex",
3+
handler: (regex) => {
4+
if (typeof regex !== "string") {
5+
return true;
6+
}
7+
8+
try {
9+
new RegExp(regex, "u");
10+
} catch (_error) {
11+
return false;
12+
}
13+
14+
return true;
15+
}
16+
};

formats/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import iri from "./handlers/iri.js";
1212
import iriReference from "./handlers/iri-reference.js";
1313
import uuid from "./handlers/uuid.js";
1414
import uriTemplate from "./handlers/uri-template.js";
15+
import regex from "./handlers/regex.js";
1516

1617

1718
addFormat(dateTime);
@@ -26,6 +27,7 @@ addFormat(iri);
2627
addFormat(iriReference);
2728
addFormat(uuid);
2829
addFormat(uriTemplate);
30+
addFormat(regex);
2931

3032
export {
3133
getShouldValidateFormat,

0 commit comments

Comments
 (0)