DEV Community

Ravi Tuvar
Ravi Tuvar

Posted on

Regex to find Arrow Functions

Top comments (10)

Collapse
 
ravituvar profile image
Ravi Tuvar

const isArrowFn = (fn) =>
(typeof fn === 'function') &&
!/^(?:(?:\/*[^(?:*\/)]*\/\s)|(?:\/\/[^\r\n]))\s*(?:(?:(?:async\s(?:(?:\/*[^(?:*\/)]*\/\s)|(?:\/\/[^\r\n]))\s*)?function|class)(?:\s|(?:(?:\/*[^(?:*\/)]*\/\s)|(?:\/\/[^\r\n])))|(?:[$\w][\w0-9$]\s(?:\/*[^(?:*\/)]*\/\s)\s()|(?:[\s*(?:\/*[^(?:*\/)]*\/\s)\s(?:(?:['][^']+['])|(?:["][^"]+["]))\s*(?:\/*[^(?:*\/)]*\/\s)\s]())/.test(fn.toString());

Collapse
 
ravituvar profile image
Ravi Tuvar

function (?[a-zA-Z0-9]+)\s*(?([^()])(?::\s[^{}\s])?)\s(?{[^\r{}](?:{[^\r{}](?:{[^\r{}](?:{[^\r{}](?:{[^\r{}](?:{[^\r{}]}[^\r{}])}[^\r{}])}[^\r{}])}[^\r{}])}[^\r{}])})(?:;)?

Collapse
 
ravituvar profile image
Ravi Tuvar
/([=]) (\([\w\s].*[\w\s]\)|\(\)) =>/gmi
Enter fullscreen mode Exit fullscreen mode
Collapse
 
ravituvar profile image
Ravi Tuvar

Working fine..

Collapse
 
ravituvar profile image
Ravi Tuvar

([=]) (([\w\s].*[\w\s])|()) =>

Collapse
 
ravituvar profile image
Ravi Tuvar

/(([\w\s].*[\w\s])|()) =>/gmi

Collapse
 
ravituvar profile image
Ravi Tuvar

(([\w\s].*[\w\s])|()) =>

Collapse
 
dendihandian profile image
Dendi Handian

what are you doing here exactly?

Collapse
 
joelbonetr profile image
JoelBonetR πŸ₯‡

*whispering: shhhhh, can't you see he's thinking out loud? πŸ˜‚

Collapse
 
jcubic profile image
Jakub T. Jankiewicz

The question is why you need regex? What is the use case. You may be better with using JavaScript parser like Esprima.