作为regexp的新手,我无法构建regexp来完成以下任务:
字符串:
(q[1]="one" and q[2]="two")
期望的结果:
(q[1].indexOf("one") and q[2].indexOf("two"))
因此,正则表达式应将="
替换为.indexOf("
组合以及"
后跟")
感谢帮助!
答案 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"
)。