vercel / ms

Tiny millisecond conversion utility
https://npmjs.com/ms
MIT License
5.16k stars 265 forks source link

Useless non capturing group in regex #164

Open Haltarys opened 3 years ago

Haltarys commented 3 years ago
 var match = /^(-?(?:\d+)?\.?\d+)

Could simply be replaced with:

  var match = /^(-?\d*\.?\d+)

The \d+ matches a digit one or more times. This match is then matched 0 or 1 time with the second ? in (?:\d+)?. This whole sub-regex could simply be expressed as \d* to match a digit 0 or more times.

Uzlopak commented 2 years ago

I doubt that it is equivalent to the original regex. non-capturing group means, that the group has to exist but is not in the resulting match. So the original regex expects atleast a number value before the dot. Your simplification says, that it can be also no digit at all before the dot.

Haltarys commented 2 years ago

(?:\d+)? == \d* is what I'm saying.