Это регулярное выражение будет делать трюк за предоставленный пример строки:
/:([^{},]+)/g
Regex101 analysis of it:
: matches the character : literally
1st Capturing group ([^{},]+)
[^{,}]+ match a single character not present in the list below
Quantifier: + Between one and unlimited times, as many times as possible, giving back as needed [greedy]
{}, a single character in the list {}, literally
g modifier: global. All matches (don't return on first match)
В основном, он ищет все символы, следующие за :
, которые не являются {},
. эти «слова» сохраняются в первой группе захвата, которая позволяет .replace
повторно использовать их с $1
.
Вы можете использовать регулярное выражение как это:
var raw = "{option:{name:angshu,title:guha}}",
regex = /:([^{,}]+)/g,
replacement = ':"$1"';
var jsonString = raw.replace(regex, replacement);
alert(jsonString);
вы имели в виду объект JSON? Если да, то используйте JSON.parse ("{option: {name: angshu, title: guha}}") – nikhil
_ Есть ли какой-либо умный способ для преобразования that_ -> Исправить код сервера, чтобы отправить действительную строку JSON. – Andreas
@Andreas Gotta согласен. Я столкнулся с преобразованием объектов JSON браузера в плоскую строку для отправки на сервер, но никогда не вижу серверов, возвращающих объекты JSON в виде плоских строк! – Gideon