url-regexp-split
v1.1.5
Published
Fast library to split an URL into it's components using a one-line regular expression.
Downloads
2
Maintainers
Readme
url-regexp-split
Fast Javascript library to split an URL into its components using a one-line regular expression.
The default parse result is very similar to the Node.js url library, but differs in a few minor ways:
- The
protocol
field leaves out the trailing:
. user
andpassword
fields are available, besidesauth
.- The leading
#
is removed fromhash
. - The extended parser adds a
mime
property containing the MIME type for thepathname
part of the URL.
For a moderately long URL the basic parser is about 8-10 times faster than the Node.js library. The extended parser is still more than twice as fast as the native library. Using the raw parser instead of the basic parser is a little faster yet, about 40% faster than basic.
Methods
Method | Arg. | Return | Description
---|---|---|---
parse
| url | see below | Run the default (basic) parsing action.
raw
| url | Array | Return the raw regexp result without parsing.
basic
| url | Object | Returns an object similar to the Node.js native url class.
extended
| url | Object | Like basic, but parses the pathname for resolvable .
and ..
elements and saves a split array in pathArray
. Parses query
into queryObj
.
Configuration
Property | Default | Description
---|---|---
parse
| "basic" | Set default parse action to "raw", "basic" or "extended"
qs
| "querystringparser" | Use either Node.js "querystring" or "querystringparser"
mime
| true | Determine the URL extension & MIME type
Usage
npm install --save url-regexp-split
var util = require('util');
var split = require('url-regexp-split')();
url = "https://user:[email protected]:8080/api/users/get/22iohoife.extension?return=name&return=email#test"
var splitUrl = split.parse(url);
console.log(util.inspect(splitUrl, { colors: true }));
Resulting object:
{ href: 'https://user:[email protected]:8080/./api/api/../users/./get/22iohoife.extension?return=name&return=email&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3#test',
matched: 'https://user:[email protected]:8080/./api/api/../users/./get/22iohoife.extension?return=name&return=email&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3#test',
protocol: 'https',
slashes: true,
auth: 'user:password',
user: 'user',
password: 'password',
hostname: 'example.com',
host: 'user:[email protected]:8080',
port: '8080',
/* The extended parser does some extra cleanup here: */
pathname: '/api/users/get/22iohoife.extension',
path: '/./api/api/../users/./get/22iohoife.extension?return=name&return=email&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3#test',
isLocal: false,
search: '?return=name&return=email&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3',
query: 'return=name&return=email&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3&a[]=3',
hash: 'test',
/* These two properties are added by extended parsing */
pathArray: [ 'api', 'users', 'get', '22iohoife.extension' ],
queryObj: {
return: [ 'name', 'email' ],
a: [ '3', '3', '3', '3', '3', '3', '3', '3', '3', '3' ]
}
}
Examples
Two example files can be found in the /examples
directory in this repository.
Notes & license
This project is available on GitHub and npm.
The project is licensed as LGPLv3, the license file is included in the project directory.
Copyright 2015 Stefan Hamminga - prjct.net
The file types.json
is part of node mime and shared (MIT licensed) by Benjamin Thomas, Robert Kieffer