diff --git a/lib/_tls_wrap.js b/lib/_tls_wrap.js index 23a5c2840e6e3e..eba8aada150bd2 100644 --- a/lib/_tls_wrap.js +++ b/lib/_tls_wrap.js @@ -963,7 +963,7 @@ function SNICallback(servername, callback) { var ctx; this.server._contexts.some(function(elem) { - if (servername.match(elem[0]) !== null) { + if (elem[0].test(servername)) { ctx = elem[1]; return true; } diff --git a/lib/dns.js b/lib/dns.js index 6fcf37a85e6c12..81f40b44bddc99 100644 --- a/lib/dns.js +++ b/lib/dns.js @@ -309,13 +309,15 @@ function setServers(servers) { // servers cares won't have any servers available for resolution const orig = cares.getServers(); const newSet = []; + const IPv6RE = /\[(.*)\]/; + const addrSplitRE = /:\d+$/; servers.forEach((serv) => { var ipVersion = isIP(serv); if (ipVersion !== 0) return newSet.push([ipVersion, serv]); - const match = serv.match(/\[(.*)\](?::\d+)?/); + const match = serv.match(IPv6RE); // we have an IPv6 in brackets if (match) { ipVersion = isIP(match[1]); @@ -323,7 +325,7 @@ function setServers(servers) { return newSet.push([ipVersion, match[1]]); } - const s = serv.split(/:\d+$/)[0]; + const s = serv.split(addrSplitRE)[0]; ipVersion = isIP(s); if (ipVersion !== 0) diff --git a/lib/internal/cluster/master.js b/lib/internal/cluster/master.js index b20a27c5ee5129..05bba01c4ed6e8 100644 --- a/lib/internal/cluster/master.js +++ b/lib/internal/cluster/master.js @@ -99,14 +99,14 @@ function createWorkerProcess(id, env) { var workerEnv = util._extend({}, process.env); var execArgv = cluster.settings.execArgv.slice(); var debugPort = 0; + var debugArgvRE = + /^(--inspect|--inspect-(brk|port)|--debug|--debug-(brk|port))(=\d+)?$/; util._extend(workerEnv, env); workerEnv.NODE_UNIQUE_ID = '' + id; for (var i = 0; i < execArgv.length; i++) { - const match = execArgv[i].match( - /^(--inspect|--inspect-(brk|port)|--debug|--debug-(brk|port))(=\d+)?$/ - ); + const match = execArgv[i].match(debugArgvRE); if (match) { if (debugPort === 0) { diff --git a/lib/repl.js b/lib/repl.js index 051261a679ebeb..b36af19d797c7c 100644 --- a/lib/repl.js +++ b/lib/repl.js @@ -754,6 +754,7 @@ function complete(line, callback) { const exts = Object.keys(this.context.require.extensions); var indexRe = new RegExp('^index(' + exts.map(regexpEscape).join('|') + ')$'); + var versionedFileNamesRe = /-\d+\.\d+/; completeOn = match[1]; var subdir = match[2] || ''; @@ -772,7 +773,7 @@ function complete(line, callback) { name = files[f]; ext = path.extname(name); base = name.slice(0, -ext.length); - if (base.match(/-\d+\.\d+(\.\d+)?/) || name === '.npm') { + if (versionedFileNamesRe.test(base) || name === '.npm') { // Exclude versioned names that 'npm' installs. continue; } @@ -816,7 +817,7 @@ function complete(line, callback) { // spam.eggs.<|> # completions for 'spam.eggs' with filter '' // foo<|> # all scope vars with filter 'foo' // foo.<|> # completions for 'foo' with filter '' - } else if (line.length === 0 || line[line.length - 1].match(/\w|\.|\$/)) { + } else if (line.length === 0 || /\w|\.|\$/.test(line[line.length - 1])) { match = simpleExpressionRE.exec(line); if (line.length === 0 || match) { var expr; @@ -1067,7 +1068,7 @@ REPLServer.prototype.memory = function memory(cmd) { self.lines.level.push({ line: self.lines.length - 1, depth: depth, - isFunction: /\s*function\s*/.test(cmd) + isFunction: /\bfunction\b/.test(cmd) }); } else if (depth < 0) { // going... up. diff --git a/lib/util.js b/lib/util.js index 91e17cb651c0f9..3c31e0932a6672 100644 --- a/lib/util.js +++ b/lib/util.js @@ -39,6 +39,8 @@ const inspectDefaultOptions = Object.seal({ breakLength: 60 }); +const numbersOnlyRE = /^\d+$/; + var CIRCULAR_ERROR_MESSAGE; var Debug; @@ -664,7 +666,7 @@ function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { } for (var n = 0; n < keys.length; n++) { var key = keys[n]; - if (typeof key === 'symbol' || !key.match(/^\d+$/)) { + if (typeof key === 'symbol' || !numbersOnlyRE.test(key)) { output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true)); } @@ -683,7 +685,7 @@ function formatTypedArray(ctx, value, recurseTimes, visibleKeys, keys) { output.push(`... ${remaining} more item${remaining > 1 ? 's' : ''}`); } for (const key of keys) { - if (typeof key === 'symbol' || !key.match(/^\d+$/)) { + if (typeof key === 'symbol' || !numbersOnlyRE.test(key)) { output.push( formatProperty(ctx, value, recurseTimes, visibleKeys, key, true)); } @@ -798,11 +800,11 @@ function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { } } if (name === undefined) { - if (array && key.match(/^\d+$/)) { + if (array && numbersOnlyRE.test(key)) { return str; } name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + if (/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/.test(name)) { name = name.substr(1, name.length - 2); name = ctx.stylize(name, 'name'); } else {