开发者

Escape apostrophes inside double quoted strings (Javascript)

开发者 https://www.devze.com 2022-12-27 16:48 出处:网络
Say 开发者_JS百科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\" } }\');

Say 开发者_JS百科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,


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消