Semantic versioning regex ^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$ example http://regexr.com/3er1i also see Semantic versioning http://semver.org/ Source of the regex npm/node-semver#32