2015-07-10 67 views
-1

我在JavaScript中使用节点Json.stringify后有一个字符串。我想替换字符串中以'ab'开始,然后是一些数字(至少一个数字)的文本,'ab ^^^^^^'其中'^的数量应该等于数字ab之后的数字。以ab开头的文本至少可以出现一次,在本例中它会出现两次。我需要正则表达式的帮助,并替换字符串使用正则表达式替换字符串

字符串 - 在此,以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"}} 

编辑

按照下面的下面的职位将是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。 – 2015-07-10 06:09:35