0

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

字符串:

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

期望的结果:

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

因此,正则表达式应该替换=".indexOf("组合以及后跟的任何"字符")

感谢帮助!

4

2 回答 2

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"))
于 2013-06-21T13:57:41.917 回答
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"while/".+?"/会导致"a")。

于 2013-06-21T14:02:30.780 回答