5

我有以下字符串。

/v/dkdkd-akdoa?

我想更换dkdkd-akdoa

我的替换方法看起来像

string.replace("v\/(.+)\?", "replace")

但它也取代了v/. 我该如何更换dkdkd-akdoa

4

3 回答 3

5

试试下面的代码:

> '/v/dkdkd-akdoa?'.replace(/(v\/).+\?/, '$1replace')
"/v/replace"

如果你想保留?

> '/v/dkdkd-akdoa?'.replace(/(v\/).+(?=\?)/, '$1replace')
"/v/replace?"

$1参考第一组 ( (v\/))

于 2013-07-25T19:11:38.313 回答
3

很简单

string.replace(/v\/.+\?/, "v/replace");

如果第一部分未知,您可以捕获并替换它:

string.replace(/(v\/).+\?/, "$1replace");

显然在第二个例子中它是已知的,因为它v/是常数。你可能会用类似的东西替换它/^(.*?/).+\?/

于 2013-07-25T19:12:41.167 回答
1

您可以将其拆分,以便前缀和后缀是它们自己的匹配组,并将它们包含在替换值中:

string.replace(/(v\/)(.+)(\?)/, "$1replace$3");

或者更简单地将您要替换的模式视为不匹配组:

string.replace(/(v\/).+(\?)/, "$1replace$2")
于 2013-07-25T19:17:21.607 回答