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') // falseSee 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') // trueDetailed 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.jsorregexp-like.min.jsavailable on the Github pages CDN.
See the note Regarding submodules for important information on cloning this repo or re-purposing its build template.