正则表达式在字符串中多次替换开始/结束符号

时间:2013-06-21 13:53:17

标签: javascript regex

作为regexp的新手,我无法构建regexp来完成以下任务:

字符串:

(q[1]="one" and q[2]="two")

期望的结果:

(q[1].indexOf("one") and q[2].indexOf("two"))

因此,正则表达式应将="替换为.indexOf("组合以及"后跟")

的任何字符

感谢帮助!

2 个答案:

答案 0 :(得分:3)

var str = '(q[1]="one" and q[2]="two")';
str = str.replace(/=("[^"]+")/g, '.indexOf($1)')

这将str设置为

(q[1].indexOf("one") and q[2].indexOf("two"))

答案 1 :(得分:1)

试试这个:

var str = '(q[1]="one" and q[2]="two")';  // use let instead of var if it's available
var newstr = str.replace(/=(".+?")/g, '.indexOf($1)');

请注意,虽然我的解决方案与dystroy的解决方案几乎相同,但它使用的是一个略有不同的正则表达式。 +?是非贪婪的匹配,意味着尽可能少地匹配匹配(因此,当搜索字符串"a"b"进行匹配时,/".+"/会导致{"a"b" 1}}而/".+?"/会产生"a")。