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