anyOf
and oneOf
implementation of the JSON Schema spec are incorrect
#399
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses issue #397.
It implements XOR regex using negative lookaheads.
The approach involves testing each
oneOf
pattern against all others using negative lookaheads. This is done in individual regex groups formatted as: "(pattern)(?!.*(other_pattern0|other_pattern1|...))". This means that 'pattern' is matched only if it is not followed by any of other_pattern0, other_pattern1, etc.These individual groups are then combined using alternation "(|)".
This ensures exclusive matching, adhering to XOR logic.
The resulting regex has quadratic complexity. I did not find any alternatives, but it seems standard regex syntax does not permit a simpler implementation.