Skip to content

XRegExp regular expressions without the pain in the ass.

Notifications You must be signed in to change notification settings

klippersubs/xre

Repository files navigation

xre

Travis CI NPM version NPM dependencies NPM license

XRegExp regular expressions without the pain in the ass.

$ yarn add xre

Examples

Multi-line RegExp with comments

import xre from 'xre';

const date = xre`/
    (?<year>  \d{4}) - # Year
    (?<month> \d{2}) - # Month
    (?<day>   \d{2})   # Day
/x`;

const { year, month, day } = date.exec('2017-06-11');

console.log(`Year: ${year}, month: ${month}, day: ${day}`);
// → Year: 2017, month: 06, day: 11

Unicode support

import xre, { configure } from 'xre';
import XRegExp from 'xregexp';

// By default xre uses minimal version of XRegExp,
// so to use the power of add-ons we have to configure it
// with full version of XRegExp:
configure({ XRegExp });

const fullName = xre`/(?<firstName>\p{Letter}+)\s(?<lastName>\p{Letter}+)/i`;

console.log(fullName.exec('Shit Ass').firstName);
// → Shit

console.log(fullName.exec('Говно Жопа').firstName);
// → Говно

console.log(fullName.exec('くそ けつ').firstName);
// → くそ

API

All built-in RegExp's methods and properties is fully supported, so you can use xre regular expressions as an argument for String's methods such as replace or match.

Methods with non-standard behavior

exec

Arguments:

  • string: string — string to search.
  • position: number = lastIndex — zero-based index at which to start the search.
  • sticky: boolean | string = false — whether the match must start at the specified position only. The string 'sticky' is accepted as an alternative to true.

Returns:

  • Match array with named backreference properties, or null.

See also:

test

Arguments:

See also:

Non-standard methods

Non-standard methods are derived from XRegExp's ones, but does not take regexp argument.

Additional API

configure

Arguments:

  • options:
    • XRegExp — XRegExp constructor.

Contributing

$ yarn run lint
$ yarn run test

Releases

No releases published

Packages

No packages published