我有以下字符串。
/v/dkdkd-akdoa?
我想更换dkdkd-akdoa
。
我的替换方法看起来像
string.replace("v\/(.+)\?", "replace")
但它也取代了v/
. 我该如何更换dkdkd-akdoa
?
我有以下字符串。
/v/dkdkd-akdoa?
我想更换dkdkd-akdoa
。
我的替换方法看起来像
string.replace("v\/(.+)\?", "replace")
但它也取代了v/
. 我该如何更换dkdkd-akdoa
?
试试下面的代码:
> '/v/dkdkd-akdoa?'.replace(/(v\/).+\?/, '$1replace')
"/v/replace"
如果你想保留?
:
> '/v/dkdkd-akdoa?'.replace(/(v\/).+(?=\?)/, '$1replace')
"/v/replace?"
$1
参考第一组 ( (v\/)
)
很简单
string.replace(/v\/.+\?/, "v/replace");
如果第一部分未知,您可以捕获并替换它:
string.replace(/(v\/).+\?/, "$1replace");
显然在第二个例子中它是已知的,因为它v/
是常数。你可能会用类似的东西替换它/^(.*?/).+\?/
您可以将其拆分,以便前缀和后缀是它们自己的匹配组,并将它们包含在替换值中:
string.replace(/(v\/)(.+)(\?)/, "$1replace$3");
或者更简单地将您要替换的模式视为不匹配组:
string.replace(/(v\/).+(\?)/, "$1replace$2")