使用正则表达式替换字符串

时间:2015-07-10 04:21:46

标签: javascript regex node.js

我在使用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

2 个答案:

答案 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,'^')})