2016-03-11 2 views
1

У меня есть строка:Regex Группа Slashes

/1/2/3/anystring as follows here even forward slashes/////

как можно захватить группы

(1) (2) (3) (anystring as follows here even forward slashes/////)

или условно, если (2) или (3) не могут быть захвачены затем захватить один (1) или (1)/(2) или (1) (2) (3) или все

Я пробовал

^/(.*)/(.*)/(.*)/(.*)

, но он не отражает /1/2/ или /1/ или /1/2/3/.

+2

Вместо '', попробуйте '' – Diryboy

ответ

1

var str = "/1/2/3/anystring as follows here even forward slashes/////"; 
 
str.replace(/\/(([\w\s]|\/+$)+)/g,"($1)");

"(1) (2) (3) (anystring следующим здесь даже слэша /////)"

+0

спасибо это работает :) –

1

Меняйте жадный кванторы .* к неохотно кванторы .*?:

^/(.*?)/(.*?)/(.*?)/(.*) 

См. live demo.

+0

спасибо, но когда я пытаюсь соответствие '/ 1/2/3/anystring/(. *) (*.?) // ', i не захватывает' anystring /// 'i работает с'/1/anystring /// ', но я фиксирую только'/1/anystring // 'отсутствует один'/' –

+0

Я думал ваш вопрос задал только «1», «2» и «3». Он захватывает остальные теперь тоже – Bohemian

1

Попробуйте

^(?:/(.*?))?(?:/(.*?))?(?:/(.*?)/).*///// 

Просто используйте квантор ? который обозначает количество 0 или 1 и не жадный квантор *? выполнять нежадным матч.

См: DEMO

+0

спасибо, но он не захватывает '/ 1/anystring ///' –

+0

Он снят. Вы проверили мое демо? – fronthem

+0

Просим прояснить шаблон, сколько черт на хвосте вашей строки? – fronthem

Смежные вопросы