diff --git a/src/bloodhound/persistent_storage.js b/src/bloodhound/persistent_storage.js index 4a85acbd..07c62029 100644 --- a/src/bloodhound/persistent_storage.js +++ b/src/bloodhound/persistent_storage.js @@ -24,7 +24,7 @@ var PersistentStorage = (function() { function PersistentStorage(namespace) { this.prefix = ['__', namespace, '__'].join(''); this.ttlKey = '__ttl__'; - this.keyMatcher = new RegExp('^' + this.prefix); + this.keyMatcher = new RegExp('^' + _.escapeRegExChars(this.prefix)); } // instance methods diff --git a/test/persistent_storage_spec.js b/test/persistent_storage_spec.js index 495f8eff..6c8dc43c 100644 --- a/test/persistent_storage_spec.js +++ b/test/persistent_storage_spec.js @@ -81,6 +81,16 @@ describe('PersistentStorage', function() { }); describe('#clear', function() { + it('should work with namespaces that contain regex characters', function() { + engine = new PersistentStorage('ns?()'); + engine.set('key1', 'val1'); + engine.set('key2', 'val2'); + engine.clear(); + + expect(engine.get('key1')).toEqual(undefined); + expect(engine.get('key2')).toEqual(undefined); + }); + it('should remove all keys that exist in namespace of engine', function() { engine.set('key1', 'val1'); engine.set('key2', 'val2');