mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-09 02:17:50 +00:00
Add test for _.escapeRegExp with eval and Function.
This commit is contained in:
@@ -114,9 +114,9 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to match `RegExp` special characters.
|
* Used to match `RegExp` special characters.
|
||||||
* See this [article on `RegExp` characters](http://www.regular-expressions.info/characters.html#special)
|
* See this [article on `RegExp` special characters](http://www.regular-expressions.info/characters.html#special)
|
||||||
* for more details. In addition the forward slash is escaped to allow for
|
* for more details. In addition to special characters the forward slash is
|
||||||
* easier `eval` and `Function` compilation use.
|
* escaped to allow for easier `eval` use and `Function` compilation.
|
||||||
*/
|
*/
|
||||||
var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
|
var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
|
||||||
reHasRegExpChars = RegExp(reRegExpChars.source);
|
reHasRegExpChars = RegExp(reRegExpChars.source);
|
||||||
|
|||||||
23
test/test.js
23
test/test.js
@@ -4195,19 +4195,30 @@
|
|||||||
QUnit.module('lodash.escapeRegExp');
|
QUnit.module('lodash.escapeRegExp');
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
var escaped = '\\.\\*\\+\\?\\^\\$\\{\\}\\(\\)\\|\\[\\]\\/\\\\',
|
|
||||||
unescaped = '.*+?^${}()|[\]\/\\';
|
|
||||||
|
|
||||||
escaped += escaped;
|
|
||||||
unescaped += unescaped;
|
|
||||||
|
|
||||||
test('should escape values', 1, function() {
|
test('should escape values', 1, function() {
|
||||||
|
var escaped = '\\.\\*\\+\\?\\^\\$\\{\\}\\(\\)\\|\\[\\]\\/\\\\',
|
||||||
|
unescaped = '.*+?^${}()|[\]\/\\';
|
||||||
|
|
||||||
|
escaped += escaped;
|
||||||
|
unescaped += unescaped;
|
||||||
|
|
||||||
strictEqual(_.escapeRegExp(unescaped), escaped);
|
strictEqual(_.escapeRegExp(unescaped), escaped);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should handle strings with nothing to escape', 1, function() {
|
test('should handle strings with nothing to escape', 1, function() {
|
||||||
strictEqual(_.escapeRegExp('abc'), 'abc');
|
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));
|
||||||
|
});
|
||||||
}());
|
}());
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
|
|||||||
Reference in New Issue
Block a user