Semver
Given a version number MAJOR.MINOR.PATCH:
MAJOR | 
      incompatible API changes | 
MINOR | 
      add functionality (backwards-compatible) | 
PATCH | 
      bug fixes (backwards-compatible) | 
Simple ranges
  1.2.3
 =1.2.3
 >1.2.3
 <1.2.3
>=1.2.3
Note that suffixed versions (1.2.3-rc1) are not matched.
Ranges
| Range | Description | Notes | 
|---|---|---|
~1.2.3 | 
      is >=1.2.3 <1.3.0 | 
      |
^1.2.3 | 
      is >=1.2.3 <2.0.0 | 
      |
^0.2.3 | 
      is >=0.2.3 <0.3.0 | 
      (0.x.x is special) | 
^0.0.1 | 
      is  =0.0.1 | 
      (0.0.x is special) | 
^1.2 | 
      is >=1.2.0 <2.0.0 | 
      (like ^1.2.0) | 
~1.2 | 
      is >=1.2.0 <1.3.0 | 
      (like ~1.2.0) | 
^1 | 
      is >=1.0.0 <2.0.0 | 
      |
~1 | 
      same | |
1.x | 
      same | |
1.* | 
      same | |
1 | 
      same | |
* | 
      any version | |
x | 
      same | 
Hyphenated ranges
| Range | Description | 
|---|---|
1.2.3 - 2.3.4 | 
      is >=1.2.3 <=2.3.4 | 
    
Partial right
| Range | Description | 
|---|---|
1.2.3 - 2.3 | 
      is >=1.2.3 <2.4.0 | 
    
1.2.3 - 2 | 
      is >=1.2.3 <3.0.0 | 
    
Partial left
| Range | Description | 
|---|---|
1.2 - 2.3.0 | 
      is 1.2.0 - 2.3.0 | 
    
When the right is partial (eg, 2.3), missing pieces are assumed to be x (eg, 2.3.x).
When the left is partial (eg, 1.2), missing pieces are assumed to be 0 (eg, 1.2.0).
Combining ranges
| Range | Description | 
|---|---|
>=0.14 <16 | 
      And (space-separated) | 
0.14.x || 15.x.x | 
      Or (pipe-separated) | 
Pre-releases
1.2.3-prerelease+build
Explanation
^ | 
      means “compatible with” | 
~ | 
      means “reasonably close to” | 
0.x.x | 
      is for “initial development” | 
1.x.x | 
      means public API is defined | 
0 Comments for this cheatsheet. Write yours!