2015-07-10 2 views
-1

У меня есть строка после Json.stringify в javascript, используя узел. Я хотел заменить текст в строке, которая начинается с «ab», а затем некоторые цифры (по крайней мере одна цифра), с «ab ^^^^^^», где число «^» должно быть равно числу цифр после ab. Текст, начинающийся с ab, может встречаться по крайней мере один раз, в этом примере это происходит дважды. Мне нужна помощь в регулярном выражении и замена строкиstring replace using regex

строка - в этом, текст, начинающийся с ab, происходит дважды.

var str = JSON.stringify({"abc":{"idcardno":"ertyuiop","form":{"somestring":"This string:\n- can have multiple \nab12345ab5677\n","flag":"true","flag2":"false"},"anothertext":"samplestring","numbetstr":"7"}}); 

после регулярного выражения замены он должен быть, как этот

{"abc":{"idcardno":"ertyuiop","form":{"somestring":"This string:\n- can have multiple \na^^^^^ab^^^^\n","flag":"true","flag2":"false"},"anothertext":"samplestring","numbetstr":"7"}} 

Edit

Согласно сообщению ниже ниже будет содержание obj.abc.form.string, входящий в несколько строк. Как выполнить замену этого объекта регулярным выражением (выше)?

This string: 
- can have multiple 
ab12345ab56778 

ответ

1

Не обрабатывать стробируемую JSON с регулярным выражением. Обработайте сам объект JavaScript, а затем выполните строчку. В вашем случае, если предположить obj является входом:

obj.abc.form.somestring = transform(obj.abc.form.somestring); 
str = JSON.stringify(obj); 

где transform является регулярным выражением/замены делает преобразование вы хотите.

+0

Спасибо большое ... Не могли бы вы помочь мне в регулярное выражение, строку obj.abc.form.somestring поступает в несколько строк - отредактировал мой вопрос. – Suresh

1

@torazaburo прав, это плохая практика, чтобы напрямую манипулировать JSON. После того, как вы получите Ахольд строки в obj.abc.form.somestring, хотя, вы можете использовать replace, передавая функцию:

str.replace(/ab\d+/g, function(match) {return match.replace(/\d/g,'^')}) 
+0

Спасибо вам всем ...... Это сработало. Есть ли какая-либо причина, по которой плохой практикой манипулировать строкой напрямую из строкой? – Suresh

+1

* Есть ли какая-нибудь причина, это плохая практика *. 1. Вам не нужно. 2. Вы можете сломать JSON. –