cstffx-search
TypeScript icon, indicating that this package has built-in type declarations

1.0.10 • Public • Published

Description

Regular expression builder for JavaScript with search mode options.

Why?

Sometimes we need to filter a string collection, but we want to configure position, match case and if only complete words will count. In Spanish is convenient for a better user experience that some characters like a and á can be considered equal. This is easy with regular expressions. For example: the regular expression /jon/ will match if the sequence jonis in any position in the target string, but /jon$/ will only at the end. This package provide a method to dynamically generate this regular expression, you only need to pass the query and options.

Example

TextSearchRegex.build("jon doe", {
    ignoreCase: true
})

// Will output /jon doe/i

To reuse the same regular expression we can use the class TextSearch.

const items = [
    // ... string collection
];

let search = new TextSearch("doe", {
    word: true,
    ignoreCase: true,
    position: TextSearchPosition.End
});

const result = items.filter(item => search.match(item))

The result is a collection with strings that contains doe at the end, with any upper/lower case combination and only if doe is a complete word.

It also possible to reuse the TextSearch instance passing a second argument to the TextSearch.match function.

let search = new TextSearch();
    search.setOptions({
    word: true,
    ignoreCase: true,
    position: TextSearchPosition.End
});
  
const someCallback(query, items){
    return items.filter(item => search.match(item, query));
}

In this case TextSearch will generate a new regular expression if query change.

Alias

As I mentioned before, sometime we need that two characters were considered as the same. The alias option is a Map that can indicate this correspondence.

const alias = new Map([
    ['Á', 'A']
])
    
// Start
let regex = TextSearchRegex.build("Ábaco", {alias})

This will generate the regular expresion: /(Á|A)baco/.

Options

Both TextSeach and TextSearchRegex receive the next options:

  • position?: TextSearchPosition Indicates if the query must appear at the start, end of any position.
  • ignoreCase?: boolean If true no match case will be applied.
  • alias?: Map<string, string> Indicate that a character can be treated as another.
  • word?: boolean If true, only whole words will match.

License MIT @ Elihu Diaz 2022. See LICENSE.

Package Sidebar

Install

npm i cstffx-search

Weekly Downloads

1

Version

1.0.10

License

MIT

Unpacked Size

14.4 kB

Total Files

10

Last publish

Collaborators

  • cstffx