expressive-ts
is a functional programming library designed to simplify building complex regular expressions.
Table of contents
npm install fp-ts expressive-ts
or
yarn add fp-ts expressive-ts
Note: fp-ts
is a peer dependency of expressive-ts
The expressive nature of the expressive-ts
API makes it incredibly easy to understand the purpose of an otherwise cryptic regular expression. Function composition is a core component of the API. By composing together the various functions provided by expressive-ts
, extremely complex regular expressions can be built easily.
Lets imagine that we would like to recognize and validate a basic URL. Here's how it would look using expressive-ts
.
import { pipe } from 'fp-ts/lib/function'
import * as E from 'expressive-ts/lib/Expression'
const expression = pipe(
E.compile, // expressions always begin with a call to `compile`
E.startOfInput,
E.string('http'),
E.maybe('s'),
E.string('://'),
E.maybe('www.'),
E.anythingBut(' '),
E.endOfInput,
E.toRegex
)
assert.strictEqual(expression.test('https://www.google.com'), true)
assert.strictEqual(expression.test('https://google.com'), true)
assert.strictEqual(expression.test('http://google.com'), true)
assert.strictEqual(expression.test('http:/google.com'), false)
assert.strictEqual(expression.test('http://goog le.com'), false)
- Super Expressive (@francisrstokes)
- Verbal Expressions (@VerbalExpressions)