2013-07-25 11 views
5

Mam następujący ciąg.Jak wybrać tylko określoną część w meczu?

/v/dkdkd-akdoa? 

Chciałbym wymienić dkdkd-akdoa.

Moja zastąpić metodę wygląda

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

ale także zastępuje v/. Jak wymienić tylko dkdkd-akdoa?

+0

http://www.regular-expressions.info/ –

Odpowiedz

3

prostu

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

Jeżeli pierwsza część nie jest znana można uchwycić i zastąpić go:

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

Oczywiście w drugim przykładzie jest ona znana od v/ jest stała. Można by potencjalnie zastąpić go czymś takim /^(.*?/).+\?/

5

Spróbuj poniższy kod:

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

Jeśli chcesz zachować ?:

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

$1 odniesienie do pierwszej grupy ((v\/))

1

Można podzielić ją tak prefiks i sufiks są własne grupy dopasowywania i uwzględnić je w zastąpionego wartość:

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

lub więcej po prostu traktują swój wzorzec ciebie zastępuje się jako grupa niezgodna:

string.replace(/(v\/).+(\?)/, "$1replace$2") 
Powiązane problemy