После /DP/
соответствует чему-либо, кроме косой черты:
[
'http://somedomain/somepath/DP/vk3103s3/ref/somepath',
'http://somedomain/somepath/DP/vk3103s3'
].forEach(str => {
console.log(
str.match(/\/dp\/([^/]+)/i)[1]
);
});
(также не используйте new RegExp
, если вам не нужно динамически создавать шаблон из переменной - вам придется дважды экранировать \
s. Лучше использовать обычный выражение буквальное)
Если между DP
и /ref
может быть несколько разделенных /
разделов URL, то аналогично тому, что вы делаете сейчас, lazy-repeat и lookahead для \/ref|$
. Не используйте \$
, потому что это будет соответствовать литерал $
символ , а не конец строки:
[
'http://somedomain/somepath/DP/vk3103s3/ref/somepath',
'http://somedomain/somepath/DP/vk3103s3',
'http://somedomain/somepath/DP/vk3103s3/somethingElse/ref/somepath'
].forEach(str => {
console.log(
str.match(/\/dp\/(.*?)(?=\/ref|$)/mi)[1]
);
});