Links recognition library with FULL unicode support. Focused on high quality link patterns detection in plain text.
Why it's awesome:
npm install linkify-it --save
import { LinkifyIt } from 'linkify-it';
const linkify = new LinkifyIt({ fuzzyLink: true });
linkify
.tlds(require('tlds'))
.tlds('onion', true)
.add('ftp:', null)
.set({ fuzzyIP: true });
console.log(linkify.test('Site github.com!'));
// true
console.log(linkify.match('Site github.com!'));
// [ {
// schema: "",
// index: 5,
// lastIndex: 15,
// raw: "github.com",
// text: "github.com",
// url: "http://github.com",
// } ]
See more in examples folder:
Creates new linkifier instance.
By default understands:
http(s)://... , ftp://..., mailto:... & //... linksoptions:
http(s):// head. Default false.false.mailto: prefix. Default true.true to terminate link with --- (if it's considered as long dash).
Default false.REBuilder instance for patched regex fragments.false.10000.Searches linkifiable pattern and returns true on success or false on fail.
Similar to .test() but checks only specific protocol tail exactly at given
position. Returns length of found pattern (0 on fail).
Returns Array of found link matches or null if nothing found.
Each match has:
// for
protocol-neutral links.Checks if a match exists at the start of the string. Returns Match
(see docs for match(text)) or null if no URL is at the start.
Doesn't work with fuzzy links.
Load (or merge) new tlds list. Those are needed for fuzzy links (without schema) to avoid false positives. By default:
xn--...) root zones are ok.If that's not enough, you can reload defaults with more detailed zones list.
Add a new schema to the schemas object.
key is a link prefix (usually, protocol name with : at the end, skype:
for example). linkify-it makes sure that prefix is not preceded with
alphanumeric char.
value is a rule to check tail after link prefix:
To disable an existing rule, use .add(key, null).
Override default options. Missed properties will not be changed.