[
    {
        "description": "ECMA 262 regex non-compliance",
        "schema": { "format": "regex" },
        "tests": [
            {
                "description": "ECMA 262 has no support for \\Z anchor from .NET",
                "data": "^\\S(|(.|\\n)*\\S)\\Z",
                "valid": false
            }
        ]
    },
    {
        "description": "ECMA 262 regex $ does not match trailing newline",
        "schema": {
            "type": "string",
            "pattern": "^abc$"
        },
        "tests": [
            {
                "description": "matches in Python, but should not in jsonschema",
                "data": "abc\n",
                "valid": false
            },
            {
                "description": "should match",
                "data": "abc",
                "valid": true
            }
        ]
    },
    {
        "description": "ECMA 262 regex converts \\t to horizontal tab",
        "schema": {
            "type": "string",
            "pattern": "^\\t$"
        },
        "tests": [
            {
                "description": "does not match",
                "data": "\\t",
                "valid": false
            },
            {
                "description": "matches",
                "data": "\u0009",
                "valid": true
            }
        ]
    },
    {
        "description": "ECMA 262 regex escapes control codes with \\c and upper letter",
        "schema": {
            "type": "string",
            "pattern": "^\\cC$"
        },
        "tests": [
            {
                "description": "does not match",
                "data": "\\cC",
                "valid": false
            },
            {
                "description": "matches",
                "data": "\u0003",
                "valid": true
            }
        ]
    },
    {
        "description": "ECMA 262 regex escapes control codes with \\c and lower letter",
        "schema": {
            "type": "string",
            "pattern": "^\\cc$"
        },
        "tests": [
            {
                "description": "does not match",
                "data": "\\cc",
                "valid": false
            },
            {
                "description": "matches",
                "data": "\u0003",
                "valid": true
            }
        ]
    },
    {
        "description": "ECMA 262 \\d matches ascii digits only",
        "schema": {
            "type": "string",
            "pattern": "^\\d$"
        },
        "tests": [
            {
                "description": "ASCII zero matches",
                "data": "0",
                "valid": true
            },
            {
                "description": "NKO DIGIT ZERO does not match (unlike e.g. Python)",
                "data": "߀",
                "valid": false
            },
            {
                "description": "NKO DIGIT ZERO (as \\u escape) does not match",
                "data": "\u07c0",
                "valid": false
            }
        ]
    },
    {
        "description": "ECMA 262 \\D matches everything but ascii digits",
        "schema": {
            "type": "string",
            "pattern": "^\\D$"
        },
        "tests": [
            {
                "description": "ASCII zero does not match",
                "data": "0",
                "valid": false
            },
            {
                "description": "NKO DIGIT ZERO matches (unlike e.g. Python)",
                "data": "߀",
                "valid": true
            },
            {
                "description": "NKO DIGIT ZERO (as \\u escape) matches",
                "data": "\u07c0",
                "valid": true
            }
        ]
    },
    {
        "description": "ECMA 262 \\w matches ascii letters only",
        "schema": {
            "type": "string",
            "pattern": "^\\w$"
        },
        "tests": [
            {
                "description": "ASCII 'a' matches",
                "data": "a",
                "valid": true
            },
            {
                "description": "latin-1 e-acute does not match (unlike e.g. Python)",
                "data": "é",
                "valid": false
            }
        ]
    },
    {
        "description": "ECMA 262 \\w matches everything but ascii letters",
        "schema": {
            "type": "string",
            "pattern": "^\\W$"
        },
        "tests": [
            {
                "description": "ASCII 'a' does not match",
                "data": "a",
                "valid": false
            },
            {
                "description": "latin-1 e-acute matches (unlike e.g. Python)",
                "data": "é",
                "valid": true
            }
        ]
    },
    {
        "description": "ECMA 262 \\s matches ascii whitespace only",
        "schema": {
            "type": "string",
            "pattern": "^\\s$"
        },
        "tests": [
            {
                "description": "ASCII space matches",
                "data": " ",
                "valid": true
            },
            {
                "description": "latin-1 non-breaking-space does not match (unlike e.g. Python)",
                "data": "\u00a0",
                "valid": false
            }
        ]
    },
    {
        "description": "ECMA 262 \\S matches everything but ascii whitespace",
        "schema": {
            "type": "string",
            "pattern": "^\\S$"
        },
        "tests": [
            {
                "description": "ASCII space does not match",
                "data": " ",
                "valid": false
            },
            {
                "description": "latin-1 non-breaking-space matches (unlike e.g. Python)",
                "data": "\u00a0",
                "valid": true
            }
        ]
    }
]