diff --git a/spec/ParseQuery.spec.js b/spec/ParseQuery.spec.js index 0e4039979a..98ef70564f 100644 --- a/spec/ParseQuery.spec.js +++ b/spec/ParseQuery.spec.js @@ -2113,6 +2113,16 @@ describe('Parse.Query testing', () => { .then(done); }); + it_id('351f57a8-e00a-4da2-887d-6e25c9e359fc')(it)('regex with unicode option', async function () { + const thing = new TestObject(); + thing.set('myString', 'hello 世界'); + await Parse.Object.saveAll([thing]); + const query = new Parse.Query(TestObject); + query.matches('myString', '世界', 'u'); + const results = await query.find(); + equal(results.length, 1); + }); + it_id('823852f6-1de5-45ba-a2b9-ed952fcc6012')(it)('Use a regex that requires all modifiers', function (done) { const thing = new TestObject(); thing.set('myString', 'PArSe\nCom'); diff --git a/src/Controllers/DatabaseController.js b/src/Controllers/DatabaseController.js index 0050216e2c..095c2e83c1 100644 --- a/src/Controllers/DatabaseController.js +++ b/src/Controllers/DatabaseController.js @@ -111,7 +111,7 @@ const validateQuery = ( Object.keys(query).forEach(key => { if (query && query[key] && query[key].$regex) { if (typeof query[key].$options === 'string') { - if (!query[key].$options.match(/^[imxs]+$/)) { + if (!query[key].$options.match(/^[imxsu]+$/)) { throw new Parse.Error( Parse.Error.INVALID_QUERY, `Bad $options value for query: ${query[key].$options}`