我在使用node的javascript中的Json.stringify之后有一个字符串。我想替换以' ab'开头的字符串中的文字。然后是一些数字(至少一位数),' ab ^^^^^^'其中数量为' ^' s应该等于ab之后的位数。以ab开头的文本至少可以发生一次,在这个例子中它出现两次。我需要正则表达式的帮助并替换字符串
string - 在此,以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
答案 0 :(得分:1)
不要使用regexp处理stringifed JSON。处理JavaScript对象本身,然后进行字符串化。在您的情况下,假设obj
是输入:
obj.abc.form.somestring = transform(obj.abc.form.somestring);
str = JSON.stringify(obj);
其中transform
是正则表达式/替换,可以进行所需的转换。
答案 1 :(得分:1)
@torazaburo是对的,直接操纵JSON是一种不好的做法。但是,一旦你在obj.abc.form.somestring中获得了字符串,就可以使用replace,传递一个函数:
str.replace(/ab\d+/g, function(match) {return match.replace(/\d/g,'^')})