String to a regex that is latin script and diacritic insensitive



Creates the inverse of transliterated string to a regex. What? Basically, a regex that is diacritic insensitive
Sometimes you are looking for déja vu, but your database is dumb and doesn't understand collations and diacritic insensitiveness, but it can compare stuff using regex, so there ya go.
Suppose you have the word résumé but written improperly in the database as
resume. The user is clever, and types it correctly into the search box. Gets
nothing. How to search for all the weird cases people mistype stuff when comes
to accents?
In the same way, you're looking for Charles de Gaulle or **Dont'a
Hightower** but you can't remember
where the spaces are. You'll be able to find them even if you're looking for
Charles degaulle or Donta Hightower
The 'i' flag is enabled globally, unless flags are set manually or
caseinsensitive option is set to false
``es6
import { stringToRegex } from 'regexator';
stringToRegex()('résumé'); // => /r[eEÉéÈèÊêëË]s[úùÚÙüÜuU]m[eEÉéÈèÊêëË]/i;
`
Type: Booleanundefined
Default:
Converts all characters, including consonants with extended mappings
`es6`
stringToRegex({ strong: true })('résumé');
// => /[RrŔŕŖŗŘřȐȑȒȓṘṙṚṛṜṝṞṟ][EeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệ][SsŚśŜŝŞşŠšȘșṠṡṢṣṤṥṦṧṨṩ][UuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰự][MmḾḿṀṁṂṃ][EeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜḝẸẹẺẻẼẽẾếỀềỂểỄễỆệ]/i
Type: Booleanundefined
Default:
includes a space or a dash(-) or a single quotation mark (') between each characters
`es6`
stringToRegex({ spaces: true })('résumé');
// => /r(?:\s|'|-)EeÈèÉéÊêËës(?:\s|'|-)UuÙùÚúÛûÜüm(?:\s|'|-)*[EeÈèÉéÊêËë]/i
Type: String
resets the mappings
`es6`
stringToRegex({
mappings: {
e: 'eéÉ',
},
})('résumé'); // => /r[eéÉ]s[úùÚÙüÜuU]m[eéÉ]/i;
If you want to change the mappings for all instances:
`ts
import { charCodes } from 'regexator';
mappings['*'] = ['[\\S\\s]+'];
`
Type: Stringi
Default:
resets the flags
`es6`
stringToRegex({ flags: 'mu' })('résumé');
// => /r[eEÉéÈèÊêëË]s[úùÚÙüÜuU]m[eEÉéÈèÊêëË]/mu;
Type: Booleantrue
Default:
if false, disables the i flag
`es6`
stringToRegex({ global: true })('résumé');
// => /r[eEÉéÈèÊêëË]s[úùÚÙüÜuU]m[eEÉéÈèÊêëË]/;
Type: Booleanundefined
Default:
enables the m flag
`es6`
stringToRegex({ multiline: true })('résumé');
// => /r[eEÉéÈèÊêëË]s[úùÚÙüÜuU]m[eEÉéÈèÊêëË]/mi;
Type: Booleanundefined
Default:
enables the u flag
`es6`
stringToRegex({ unicode: true })('résumé');
// => /r[eEÉéÈèÊêëË]s[úùÚÙüÜuU]m[eEÉéÈèÊêëË]/iu;
Be aware of RegExp.prototype.exec with g flag being stateful
The i flag is appended to the RegExp flags if you don't pass any flags to stringToRegex
Work in node and the browser, but needs polyfills for Array.reduce, Array.map and Object.keys` depending on how old your target browser is
MIT