George Sheppard
George Sheppard

Reputation: 13

Escape apostrophes inside double quoted strings (Javascript)

Say i have a string that i need to evaluate in javascript such as :

window.some_class.update( 'Runner', 'update_runner', '{"runner":{"id":"1","name":"Nin's Lad" } }');

In order for eval() to evaluate it, i need to escape the apostrophe in runner_name (Nin's Lad). Is this possable with regex? I dont want to escape the single quotes around Runner and update_runner. I'd just like to escape any single quotes inside double quotes.

Thanks,

Upvotes: 1

Views: 2145

Answers (2)

Matt
Matt

Reputation: 44058

This works for your specific case, but I'm sure there are some corner cases someone will point out:

yourString = yourString.replace(/"([^"]*)'([^"]*)"/g, "$1\\'$2");

Also, I'd like to point you to the last paragraph of this page:

eval is Evil

The eval function is the most misused feature of JavaScript. Avoid it.

If you're using eval, there's probably a better way to accomplish your goal.

Upvotes: 4

Alan Moore
Alan Moore

Reputation: 75222

s = s.replace(/'(?=[^"]*"(?:[^"]*"[^"]*")*[^"]*$)/g, "\\'");

That matches an apostrophe if there's an odd number of quotation marks ahead of it in the string. If the string is as simple as what you posted, that should mean the apostrophe is inside a double-quoted string, but it's far from bulletproof.

Upvotes: 0

Related Questions