For example,
const regex = VerEx().startOfLine().then('abc').or().then('def').endOfLine();
throws the following error
SyntaxError {
message: 'Invalid regular expression: /^(?:(?:abc))|(?:(?:def)$/: Unterminated group',
}
This traces to how _suffixes is handled.
or(value) {
// ...
this._suffixes = `)${this._suffixes}`;
// ...
}
endOfLine(enable = true) {
this._suffixes = enable ? '$' : '';
// ...
}
When endOfLine is used after or, the initial close paren introduced by or is erased.
I could take a shot at fixing this. How do we want the above example to be interpreted, as /^(?:abc|def)$/gm or as /^(?:abc|def$)/gm? Now that I think of it, this might have been a feature and not a bug due to this ambiguity. If so, it should be documented.
For example,
throws the following error
This traces to how
_suffixesis handled.When
endOfLineis used afteror, the initial close paren introduced byoris erased.I could take a shot at fixing this. How do we want the above example to be interpreted, as
/^(?:abc|def)$/gmor as/^(?:abc|def$)/gm? Now that I think of it, this might have been a feature and not a bug due to this ambiguity. If so, it should be documented.