Skip to content

Error: Invalid Regular Expression when using Modifiers #1410

@noahismith

Description

@noahismith

Expected Behavior

javascript-obfuscator can obfuscate javascript using regular expression modifiers. ex. console.log(/(?i:abc)/.test('ABC'));

Current Behavior

Error thrown Error: ERROR at line 1: Invalid regular expression: /(?i:abc)/: Invalid group (1:13). See full stack trace below.

Steps to Reproduce

Test repository to reproduce can be found here. Alternatively can follow the instructions below.

  1. Create a JS file using regex modifiers. ex.
console.log(/(?i:abc)/.test('ABC'));
  1. Obfuscate using JS obfuscate
const JavaScriptObfuscator = require('javascript-obfuscator');

JavaScriptObfuscator.obfuscate("console.log(/(?i:abc)/.test('ABC'));"); // Fails
JavaScriptObfuscator.obfuscate("console.log(/(abc)/.test('ABC'));"); // Succeeds

JavaScript Obfuscator Edition

  • JavaScript Obfuscator Open Source

Your Environment

  • Obfuscator version used: 5.4.3
  • Node version used: v24.14.0

Stack trace

Error: ERROR at line 1: Invalid regular expression: /(?i:abc)/: Invalid group (1:13)
> ...console.log(/(?i:abc)/.test(...
    at p.processParsingError (/Users/nsmith/dev/javascript-obfuscate-modifiers/node_modules/javascript-obfuscator/dist/index.js:23:163396)
    at p.parse (/Users/nsmith/dev/javascript-obfuscate-modifiers/node_modules/javascript-obfuscator/dist/index.js:23:162739)
    at n.parseCode (/Users/nsmith/dev/javascript-obfuscate-modifiers/node_modules/javascript-obfuscator/dist/index.js:23:249071)
    at n.obfuscate (/Users/nsmith/dev/javascript-obfuscate-modifiers/node_modules/javascript-obfuscator/dist/index.js:23:248748)
    at p.obfuscate (/Users/nsmith/dev/javascript-obfuscate-modifiers/node_modules/javascript-obfuscator/dist/index.js:23:198606)
    at Object.<anonymous> (/Users/nsmith/dev/javascript-obfuscate-modifiers/obfuscate.js:3:22)
    at Module._compile (node:internal/modules/cjs/loader:1812:14)
    at Object..js (node:internal/modules/cjs/loader:1943:10)
    at Module.load (node:internal/modules/cjs/loader:1533:32)
    at Module._load (node:internal/modules/cjs/loader:1335:12)

Node.js v24.14.0

Minimal working example that will help to reproduce issue

const JavaScriptObfuscator = require('javascript-obfuscator');

JavaScriptObfuscator.obfuscate("console.log(/(?i:abc)/.test('ABC'));"); // Fails
JavaScriptObfuscator.obfuscate("console.log(/(abc)/.test('ABC'));"); // Succeeds

Or see linked repo to reproduce.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugdependenciesPull requests that update a dependency file

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions