Skip to content

wimpyprogrammer/strings-to-regex

Repository files navigation

strings-to-regex

npm package node version npm type definitions Tests status codecov Known Vulnerabilities

Generate a compact Regular Expression that matches a finite set.

Have you ever seen a dense Regular Expression like this one to match the 50 US state abbreviations?

/(A(L|K|Z|R)|C(A|O|T)|DE|FL|GA|HI|I(D|L|N|A)|K(S|Y)|LA|M(E|D|A|I|N|S|O|T)|N(E|V|H|J|M|Y|C|D)|O(H|K|R)|PA|RI|S(C|D)|T(N|X)|UT|V(T|A)|W(A|V|I|Y))/

This library generates patterns like that to match a list of strings you provide.

To reverse this process and list which strings a Regular Expression would match, try regex-to-strings.

API

condense(arrayOfStrings)

Generate a Regular Expression to match all strings in arrayOfStrings. Respects the casing of the strings. Returns a RegExp object.

import { condense } from 'strings-to-regex';

const stringsToMatch = ['foo', 'foobar', 'Foo', 'fooBarBaz'];
const matcher = condense(stringsToMatch);
console.log(matcher); // /(foo(|bar|BarBaz)|Foo)/

condenseIgnoreCase(arrayOfStrings)

A variation of condense() that ignores the casing of the strings. Returns a RegExp object.

import { condenseIgnoreCase } from 'strings-to-regex';

const stringsToMatch = ['foo', 'foobar', 'Foo', 'fooBarBaz'];
const matcher = condenseIgnoreCase(stringsToMatch);
console.log(matcher); // /foo(|bar(|baz))/i