1.1.5 • Published 9 years ago

url-regexp-split v1.1.5

Weekly downloads
16
License
LGPL-3.0
Repository
github
Last release
9 years ago

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:

  1. The protocol field leaves out the trailing :.
  2. user and password fields are available, besides auth.
  3. The leading # is removed from hash.
  4. The extended parser adds a mime property containing the MIME type for the pathname 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

MethodArg.ReturnDescription
parseurlsee belowRun the default (basic) parsing action.
rawurlArrayReturn the raw regexp result without parsing.
basicurlObjectReturns an object similar to the Node.js native url class.
extendedurlObjectLike basic, but parses the pathname for resolvable . and .. elements and saves a split array in pathArray. Parses query into queryObj.

Configuration

PropertyDefaultDescription
parse"basic"Set default parse action to "raw", "basic" or "extended"
qs"querystringparser"Use either Node.js "querystring" or "querystringparser"
mimetrueDetermine 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:password@example.com: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:password@example.com: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:password@example.com: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:password@example.com: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

1.1.5

9 years ago

1.1.4

9 years ago

1.1.3

9 years ago

1.1.2

9 years ago

1.1.1

9 years ago

1.1.0

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago