public static function matchSemVer($string)
    {
        // Array of matches for PCRE
        $matches = array();

        // Match the possible parts of a SemVer
        $matched = preg_match(
            self::$version,
            $string,
            $matches
        );

        // No match, invalid
        if (!$matched) {
            throw new InvalidArgumentException(
                '"' . $string . '" is not a valid SemVer'
            );
        }

        // Return matched array
        return $matches;
    }