orbitbot
orbitbot

Reputation: 768

Javascript regex ends with pattern

I'm trying to write a regex in javascript to identify string representations of arbitrary javascript functions found in json, ie. something like

{
  "key": "function() { return 'I am a function'; }"
}

It's easy enough to identify the start, but I can't figure out how to identify the ending double quotes since the function might also contain escaped double quotes. My best try so far is

/"\s*function\(.*\)[^"]*/g

which works nicely if there are no double quotes in the function string. The end of a json key value will end with a double quote and a subsequent comma or closing bracket. Is there some way to retrieve all characters (including newline?) until a negated pattern such as

not "/s*, and not "/s*}

... or do I need to take a completely different approach without regex?

Here's is the current test data I'm working with: http://regexr.com/39pvi

Upvotes: 2

Views: 182

Answers (1)

Avinash Raj
Avinash Raj

Reputation: 174696

Seems like you want something like this,

"\s*function\(.*\)(?:\\.|[^\\"])*

It matches also the inbetween \" escaped double quotes.

DEMO

Upvotes: 1

Related Questions