You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
2.9 KiB

# my-name-is-url [![Build Status](https://travis-ci.org/lukechilds/my-name-is-url.svg?branch=master)](https://travis-ci.org/lukechilds/my-name-is-url) [![Coverage Status](https://coveralls.io/repos/github/lukechilds/my-name-is-url/badge.svg?branch=master)](https://coveralls.io/github/lukechilds/my-name-is-url?branch=master)
Intelligently recognises many different url formats in a string. For the browser and node. [Here, have a play](http://lukechilds.github.io/my-name-is-url).
## About
`my-name-is-url` was created because I couldn't find a parser with a high enough success rate. The url spec is so vague that many strings _could_ be a url, therefore matching the spec directly results in a lot of false positives. Most parsers get around this by requiring a url to contain a scheme to be matched as a url.
The regular expression used in `my-name-is-url` tries to match patterns likely to represent a url in a sentence rather than matching the actual url spec. This results in a much wider scope of matchable urls than most other parsers without introducing loads of false positives.
> ❗️**Important note**
>
9 years ago
> If you're trying to parse a url into sections (scheme,host) or check a url is valid this module isn't for you. This module is intended to find urls in a string.
## Install
```shell
npm install --save my-name-is-url
```
or
```shell
jspm install my-name-is-url
```
## Usage
```js
import Urls from 'my-name-is-url';
const getText = 'Check out these sites: foobar.com,//foo.ninja,http://bar.com.';
Urls(getText).get();
// [ 'foobar.com', '//foo.ninja', 'http://bar.com' ]
const filterText = 'My GitHub profile: https://github.com/lukechilds';
Urls(filterText).filter(url => `<a href="${url}">${url}</a>`);
// 'My GitHub profile: <a href="https://github.com/lukechilds">https://github.com/lukechilds</a>'
```
### Importing
CommonJS
```js
var Urls = require('my-name-is-url');
```
ES6
```js
import Urls from 'my-name-is-url';
```
### Regex
If you just wanna do your own thing the regex used internally is helpfully exposed.
```js
var urlRegex = require('my-name-is-url').regex;
```
or
```js
import { regex as urlRegex } from 'my-name-is-url';
```
## API
### regex
The regex used internally for matching urls.
### get()
Returns an array of url matches. If there are no matches an empty array will be returned.
```js
const text = 'Check out these sites: foobar.com,//foo.ninja,http://bar.com.';
Urls(text).get();
// [ 'foobar.com', '//foo.ninja', 'http://bar.com' ]
```
### filter(cb)
Runs a filter callback on each url in a string.
#### cb
*Required*
Type: `function`
```js
const text = 'My GitHub profile: https://github.com/lukechilds';
Urls(text).filter(url => `<a href="${url}">${url}</a>`);
// 'My GitHub profile: <a href="https://github.com/lukechilds">https://github.com/lukechilds</a>'
```
9 years ago
> 👍 **Pro tip**
9 years ago
>
9 years ago
> You can get a parser instance by calling `Urls()` or `new Urls`, whichever you prefer.
9 years ago
## License
9 years ago
MIT © Luke Childs