Get a RegExp object from a SQL LIKE string.
var rexExpLIKE = require('regexp-like')
var jonnyLike = rexExpLIKE('John %')
jonnyLike.test('John Adams') // true
jonnyLike.test('John Wayne') // true
jonnyLike.test('Charles Adams') // false
jonnyLike.test('Johnathan Adams') // false
See LIKE for more information.
The conversion algorithm is not trivial so I've provided a simple mechanism for caching converted patterns. In this example, subsequent calls to regExpLIKE()
retrives the previously converted pattern from the cache. (Note the .cached
in the following!)
var rexExpLIKE = require('regexp-like').cached
rexExpLIKE('John %').test('John Adams') // true
rexExpLIKE('John %').test('John Wayne') // true
Detailed API docs can be found here.
The cache is simply a hash and will grow indefinitely unless you manage it. This may or may not be necessary depending on how your app is using the cache.
The maximum cache size (regExpLIKE.cacheMax
) is initially undefined. You can set it at any time and it this new limit will be respected on the next call to regExpLIKE.cached()
:
regExpLIKE.cacheMax = 100;
Depending on your app, reasonable values might be 100, 400, 800, etc.
When the cache becomes full, the next new pattern to be cached causes the least-recently-used 10% of the patterns to be culled from the cache.
To clear the cache entirely:
regExpLIKE.clearCache();
To delete a single previously inserted LIKE pattern
:
regExpLIKE.clearCache(pattern);
To get the current size of the cache:
var currentCacheSize = regExpLIKE.getCacheSize();
A trivial demo can be found here.
To use in a browser, you have two options:
- Incorporate the node module into your own browserified project.
- Use the browser-ready versions
regexp-like.js
orregexp-like.min.js
available on the Github pages CDN.
See the note Regarding submodules for important information on cloning this repo or re-purposing its build template.