rust-lang / regex

An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs.

Home Page:https://docs.rs/regex

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Invalid regex with multiple repetition flags is accepted

spektom opened this issue · comments

What version of regex are you using?

Latest

Describe the bug at a high level.

The following regexes are accepted while they shouldn't:

[0-9]++
[0-9]+++
...

Looks like the extra repetition flags have no effect after all.

What are the steps to reproduce the behavior?

Link to the playground

What is the expected behavior?

Invalid regular expression: /[0-9]++/: Nothing to repeat.

The following regexes are accepted while they shouldn't

On what basis are you claiming that they "shouldn't" be valid?

Anyway, this is probably duplicate of #765.

These patterns are invalid in other regex engines - does this qualify for a good enough reason? :)
I understand that each regex engine may have slightly different rules as there's no unique standard. Maybe it should be mentioned in the documentation that extra flags are ignored?

Anyway, thanks for your tremendous work!

These patterns are invalid in other regex engines - does this qualify for a good enough reason? :)

No. Think about what that would mean if this were actually applied.

Maybe it should be mentioned in the documentation that extra flags are ignored?

I don't think so. At least, not in the existing syntax docs. Those was brought up before in the linked issue (or another one), but this is a pathological case and there is nothing in the docs that suggests this pattern would be illegal. The only reason people seem to think it's weird is because other regex engineers reject it. But I see no reason to reject it. Again, I wrote out a full explanation in the linked issue. And suggested this is something that belongs in "differences with other regex engines" doc. There's an issue for that too.