function parseComplex128( str ) {
	var match;
	var re;
	var im = 0;

	if ( !isString( str ) ) {
		throw new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );
	}

	match = replace( str, /\s/g, '' ).match( regexp() );
	if ( !match ) {
		throw new Error( format( 'invalid argument. Unable to parse input string as a complex number. Value: `%s`.', str ) );
	}

	// Real part:
	re = ( match[1] && !match[1].endsWith( 'i' ) ) ? parseFloat( match[1] ) : 0;

	// Imaginary part:
	if ( match[4] ) {
		im = ( ( match[3] === '-' ) ? -1 : 1 ) * parseFloat( replace( match[4], /i$/, '' ) );
	} else if ( match[1] && match[1].endsWith( 'i' ) ) {
		im = parseFloat( replace( match[1], /i$/, '' ) );
	}
	return new Complex128( re, im );
}
Parse a string representation of a complex number and returns a Complex128 instance.

@param {string} str - string representation of a complex number
@throws {TypeError} must provide a string
@throws {Error} must provide a valid string representation of a complex number
@returns {Complex128} 128-bit complex number

@example
var str = '1 + 2i';
var z = parseComplex128( str );
// returns <Complex128>