1Finally there is the *, which while available, isn’t used as often. The primary reason for its less frequent use is the fact that it acts as a stand in for either the major, minor, or patch number and catches any version number for the place that it represents. For example a dependency with a version of * would equate to any version that was greater than or equal to 0.0.0, while 1.* would allow versions greater than or equal to 1.0.0 and less than 2.0.0.
11.2.3 => 1.2.3 (Matching exactly same version)
2~1.2.3 => >=1.2.3 && < 1.3.0 (Matching minor version)
3^1.2.3 => >=1.2.3 && < 2.0.0 (Matching major version)