Add test for _.escapeRegExp with eval and Function.

This commit is contained in:
jdalton
2015-03-21 11:41:42 -07:00
parent 8e425fb358
commit 820ab8d486
2 changed files with 20 additions and 9 deletions

View File

@@ -114,9 +114,9 @@
/**
* Used to match `RegExp` special characters.
* See this [article on `RegExp` characters](http://www.regular-expressions.info/characters.html#special)
* for more details. In addition the forward slash is escaped to allow for
* easier `eval` and `Function` compilation use.
* See this [article on `RegExp` special characters](http://www.regular-expressions.info/characters.html#special)
* for more details. In addition to special characters the forward slash is
* escaped to allow for easier `eval` use and `Function` compilation.
*/
var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
reHasRegExpChars = RegExp(reRegExpChars.source);

View File

@@ -4195,19 +4195,30 @@
QUnit.module('lodash.escapeRegExp');
(function() {
var escaped = '\\.\\*\\+\\?\\^\\$\\{\\}\\(\\)\\|\\[\\]\\/\\\\',
unescaped = '.*+?^${}()|[\]\/\\';
escaped += escaped;
unescaped += unescaped;
test('should escape values', 1, function() {
var escaped = '\\.\\*\\+\\?\\^\\$\\{\\}\\(\\)\\|\\[\\]\\/\\\\',
unescaped = '.*+?^${}()|[\]\/\\';
escaped += escaped;
unescaped += unescaped;
strictEqual(_.escapeRegExp(unescaped), escaped);
});
test('should handle strings with nothing to escape', 1, function() {
strictEqual(_.escapeRegExp('abc'), 'abc');
});
test('should work with `eval` and `Function`', 2, function() {
var string = '[lodash](https://lodash.com/)',
escaped = _.escapeRegExp(string),
regexp = eval('(/' + escaped + '/)');
ok(regexp.test(string));
regexp = Function('return /' + escaped + '/')();
ok(regexp.test(string));
});
}());
/*--------------------------------------------------------------------------*/