powerboy
powerboy

Reputation: 10961

extract variables from an expression using javascript regexp

For example, here is a string representing an expression:

var str = 'total = sum(price * qty) * 1.09875';

I want to extract variables (i.e., 'total', 'price' and 'qty' but not 'sum' since 'sum' is a function name) from this expression. What is the regexp pattern in javascript? Variable name consists of letters, digits, or the underscore, beginning with letters or the underscore.

Upvotes: 1

Views: 1282

Answers (1)

kennytm
kennytm

Reputation: 523304

return "total = sum(price * qty) * 1.09875".match(/[a-z_]\w*(?!\w*\s*\()/ig);

Here,

  1. [a-z_] matches 1 letter or 1 underscore,
  2. \w* matches 0 or more letters, digits or underscore (\w means [a-zA-Z0-9_])
  3. (?!…) is a negative lookahead. The match will fail if the stuff inside is matched.
  4. \w*\s*\( matches some letters, followed by some spaces, and then an (. This allows function names to be rejected.

Upvotes: 4

Related Questions