Javascript字符串替换为正则表达式?

时间:2014-11-12 13:54:45

标签: javascript regex

是否可以使用正则表达式将1替换为2?第一个括号中的值将始终为整数。我开始使用str.split('[')这样做,并意识到这不是最好的方法。

编辑 - 第一个括号中的值可以是任何整数。此字符串基本上是大动态表单中表单字段的名称属性。表单由行中的字段组成,第一个括号中的数字表示行。通过克隆最后一行添加新的字段行,但需要在name属性中更新行索引。

value[1][some_string]

3 个答案:

答案 0 :(得分:2)

(value)\[(\d+)

试试这个。参见demo。替换$1[<any number>

http://regex101.com/r/tF5fT5/56

var re = /(value)\[(\d+)/gm;
var str = 'value[1][some_string]';
var subst = '$1[2';

var result = str.replace(re, subst);

答案 1 :(得分:0)

更好地使用替换......

这将取代第一场比赛:

str.replace("1","2");

这会将所有1替换为2

var patt = new RegExp("1", "g");
str.replace(patt, "2");

答案 2 :(得分:0)

关于您更新的问题,请尝试:

function inc_cnt(s){return Number(s)+1;}
elm.name=elm.name.replace(/\d+(?=\]\[)/, inc_cnt);

*(假设elm是您的克隆元素)

此正则表达式将匹配第一次出现:任何数字后跟 ][
(例如,它只会与26中的value[26][some_val_42][foo_bar]匹配。

然后将此匹配传递给函数inc_cnt,该函数接受表示十进制数的字符串,将其转换为数字并将其加1,将结果数返回给替换方法
有效地自动递增你的计数器)。

注意,或者inc_cnt的有效负载可以更改为return parseInt(s, 10)+1或者您可以依靠强制功能并执行return +s+1

根据您的编码风格,您可以将其重新计算为:

elm.name=elm.name.replace(/\d+(?=\]\[)/, function(s){return +s+1});

另请注意<a><applet><button><form><frame>,{{1} },<iframe><img><input><map><meta><object><param><select>支持直接获取/设置名称​​属性(通过<textarea>) 其他元素需要elm.namegetAttribute() 方法

希望这有帮助!