diff --git a/src/lib/contains.js b/src/lib/contains.js index c1d237c46..7be314b04 100644 --- a/src/lib/contains.js +++ b/src/lib/contains.js @@ -11,7 +11,9 @@ export default function contains(str, elem, options) { assertString(str); options = merge(options, defaulContainsOptions); - const regex = new RegExp(toString(elem), `g${options.ignoreCase ? 'i' : ''}`); + if (options.ignoreCase) { + return str.toLowerCase().split(toString(elem).toLowerCase()).length > options.minOccurrences; + } - return (str.match(regex) || []).length >= options.minOccurrences; + return str.split(toString(elem)).length > options.minOccurrences; } diff --git a/test/validators.js b/test/validators.js index 0729d92ff..d945eea13 100644 --- a/test/validators.js +++ b/test/validators.js @@ -4245,7 +4245,7 @@ describe('Validators', () => { args: ['foo', { minOccurrences: 2, }], - valid: ['foofoofoo', '12foo124foo', 'fofooofoooofoooo'], + valid: ['foofoofoo', '12foo124foo', 'fofooofoooofoooo', 'foo1foo'], invalid: ['foo', 'foobar', 'Fooofoo', 'foofo'], }); });