如何只选择匹配中的某个部分?

Moo*_*oon 5 javascript regex

我有以下字符串.

/v/dkdkd-akdoa?
Run Code Online (Sandbox Code Playgroud)

我想替换dkdkd-akdoa.

我的替换方法看起来像

string.replace("v\/(.+)\?", "replace")
Run Code Online (Sandbox Code Playgroud)

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

fal*_*tru 5

请尝试以下代码:

> '/v/dkdkd-akdoa?'.replace(/(v\/).+\?/, '$1replace')
"/v/replace"
Run Code Online (Sandbox Code Playgroud)

如果你想保持?:

> '/v/dkdkd-akdoa?'.replace(/(v\/).+(?=\?)/, '$1replace')
"/v/replace?"
Run Code Online (Sandbox Code Playgroud)

$1引用第一组((v\/))


Exp*_*lls 3

很简单

string.replace(/v\/.+\?/, "v/replace");
Run Code Online (Sandbox Code Playgroud)

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

string.replace(/(v\/).+\?/, "$1replace");
Run Code Online (Sandbox Code Playgroud)

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