2 * @fileoverview Rule to forbid control charactes from regular expressions.
3 * @author Nicholas C. Zakas
8 //------------------------------------------------------------------------------
10 //------------------------------------------------------------------------------
12 module.exports = function(context) {
14 function getRegExp(node) {
16 if (node.value instanceof RegExp) {
18 } else if (typeof node.value === "string") {
20 var parent = context.getAncestors().pop();
21 if ((parent.type === "NewExpression" || parent.type === "CallExpression") &&
22 parent.callee.type === "Identifier" && parent.callee.name === "RegExp") {
24 // there could be an invalid regular expression string
26 return new RegExp(node.value);
42 "Literal": function(node) {
45 regex = getRegExp(node);
48 computedValue = regex.toString();
49 if (/[\x00-\x1f]/.test(computedValue)) {
50 context.report(node, "Unexpected control character in regular expression.");