我有以下字符串。
/v/dkdkd-akdoa?
我想替换dkdkd-akdoa
。
我的替换方法看起来像
string.replace("v\/(.+)\?", "replace")
但它也取代了v/
。如何仅替换dkdkd-akdoa
?
答案 0 :(得分:5)
请尝试以下代码:
> '/v/dkdkd-akdoa?'.replace(/(v\/).+\?/, '$1replace')
"/v/replace"
如果你想保持?
:
> '/v/dkdkd-akdoa?'.replace(/(v\/).+(?=\?)/, '$1replace')
"/v/replace?"
$1
引用第一组((v\/)
)
答案 1 :(得分:3)
非常简单
string.replace(/v\/.+\?/, "v/replace");
如果第一部分未知,您可以捕获并替换它:
string.replace(/(v\/).+\?/, "$1replace");
显然,在第二个例子中,因为v/
是常数而已知。您可能会用/^(.*?/).+\?/
答案 2 :(得分:1)
你可以分解它,所以前缀和后缀是它们自己的匹配组,并将它们包含在被替换的值中:
string.replace(/(v\/)(.+)(\?)/, "$1replace$3");
或者更简单地将您正在替换的模式视为不匹配的组:
string.replace(/(v\/).+(\?)/, "$1replace$2")