lib/index.js
function uri( val ) {
	var parts,
		scheme,
		authority,
		path;
	if ( !isString( val ) ) {
		return false;
	}
	// [1] Check for illegal characters:
	if ( ILLEGALS.test( val ) ) {
		return false;
	}
	// [2] Check for incomplete HEX escapes:
	if ( HEX1.test( val ) || HEX2.test( val ) ) {
		return false;
	}
	// [3] Split the string into various URI components:
	parts = val.match( URI );
	scheme = parts[ 1 ];
	authority = parts[ 2 ];
	path = parts[ 3 ];

	// [4] Scheme is required and must be valid:
	if ( !scheme || !scheme.length || !SCHEME.test( scheme.toLowerCase() ) ) {
		return false;
	}
	// [5] If authority is not present, path must not begin with a '//':
	if ( !authority && PATH.test( path ) ) {
		return false;
	}
	return true;
}
function uri( val ) {
	var parts,
		scheme,
		authority,
		path;
	if ( !isString( val ) ) {
		return false;
	}
	// [1] Check for illegal characters:
	if ( ILLEGALS.test( val ) ) {
		return false;
	}
	// [2] Check for incomplete HEX escapes:
	if ( HEX1.test( val ) || HEX2.test( val ) ) {
		return false;
	}
	// [3] Split the string into various URI components:
	parts = val.match( URI );
	scheme = parts[ 1 ];
	authority = parts[ 2 ];
	path = parts[ 3 ];

	// [4] Scheme is required and must be valid:
	if ( !scheme || !scheme.length || !SCHEME.test( scheme.toLowerCase() ) ) {
		return false;
	}
	// [5] If authority is not present, path must not begin with a '//':
	if ( !authority && PATH.test( path ) ) {
		return false;
	}
	return true;
}
function uri ( val ) { var parts , scheme , authority , path ; if ( ! isString ( val ) ) { return false ; } // [1] Check for illegal characters: if ( ILLEGALS . test ( val ) ) { return false ; } // [2] Check for incomplete HEX escapes: if ( HEX1 . test ( val ) || HEX2 . test ( val ) ) { return false ; } // [3] Split the string into various URI components: parts = val . match ( URI ) ; scheme = parts [ 1 ] ; authority = parts [ 2 ] ; path = parts [ 3 ] ; // [4] Scheme is required and must be valid: if ( ! scheme || ! scheme . length || ! SCHEME . test ( scheme . toLowerCase ( ) ) ) { return false ; } // [5] If authority is not present, path must not begin with a '//': if ( ! authority && PATH . test ( path ) ) { return false ; } return true ; }
URI // 
FUNCTION: uri( value )
Validates if a value is a URI.

@param {*} value - value to validate
@returns {Boolean} boolean indicating if a value is a URI
URI // FUNCTION : uri ( value ) Validates if a value is a URI .