Skip to content

Instantly share code, notes, and snippets.

@manekinekko
Last active July 2, 2024 12:37
Show Gist options
  • Save manekinekko/7e58a17bc62a9be47172 to your computer and use it in GitHub Desktop.
Save manekinekko/7e58a17bc62a9be47172 to your computer and use it in GitHub Desktop.
A regular Expression to parse ECMAScript6 import syntax
let regex = `import
(?:
["'\s]*
([\w*{}\n, ]+)
from\s*
)?
["'\s]*
([@\w/_-]+)
["'\s]*
;?
`;
// Matches...
/*
import {
Component
} from '@angular2/core';
import defaultMember from "module-name";
import * as name from "module-name ";
import { member } from " module-name";
import { member as alias } from "module-name";
import { member1 , member2 } from "module-name";
import { member1 , member2 as alias2 , member3 as alias3 } from "module-name";
import defaultMember, { member, member } from "module-name";
import defaultMember, * as name from "module-name";
import "module-name";
*/
@mrhyde
Copy link

mrhyde commented Feb 1, 2024

Hey everyone,

I wanted to share an optimized regex pattern that can be used to match import statements in JavaScript. This regex will successfully match various types of imports, including side effect imports (e.g., import "module-name";) and dynamic imports. It also handles different types of quotes, multiline import statements, and multiple whitespaces.

Here's the optimized regex pattern:

import\s+(?:{[^{}]+}|.*?)\s*(?:from)?\s*['"].*?['"]|import\(.*?\)

You can check out a live demo and test it using this Regex101 link.

@manekinekko
Copy link
Author

Hey everyone,

I wanted to share an optimized regex pattern that can be used to match import statements in JavaScript. This regex will successfully match various types of imports, including side effect imports (e.g., import "module-name";) and dynamic imports. It also handles different types of quotes, multiline import statements, and multiple whitespaces.

Here's the optimized regex pattern:

import\s+(?:{[^{}]+}|.*?)\s*(?:from)?\s*['"].*?['"]|import\(.*?\)

You can check out a live demo and test it using this Regex101 link.

I love it! Thanks for sharing!

@pavelmickevic
Copy link

pavelmickevic commented Jul 2, 2024

thanks @ganeshkbhat, I used it for the reference. Mine particular case to find occurences of specific import package.

import(?:[\s.*]([\w*{}\n\r\t, ]+)[\s*]from)\s+['"]lodash['"];
                                                  ^^^^^^

https://regex101.com/r/Nkplnn/1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment