Замените слова между слешами, но пропустите первый случай - PullRequest
0 голосов
/ 18 ноября 2018

Я играл с этим онлайн-инструментом Regex , но я не добился никакого прогресса.

У меня есть несколько строк:

/a/b/c/
/x/z/
/y/

Я пытаюсь заменить слова между косыми чертами на *, но пропускаю первое слово, чтобы вывод выглядел следующим образом:

/a/*/*/
/x/*/
/y/

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Также вы можете использовать split() и .map() вместо регулярных выражений

var newStr = str.split('/').map(function(v, i){
  return i<=1 || v=='' ? v : '*';
}).join('/');

function newStr(str){
  return str.split('/').map(function(v, i){
    return i<=1 || v=='' ? v : '*';
  }).join('/');
}
console.log(newStr('/a/b/c/'));
console.log(newStr('/x/z/'));
console.log(newStr('/y/'));
0 голосов
/ 18 ноября 2018

Один из вариантов - отрицать прогноз на ^ в начале регулярного выражения (^ соответствует началу строки, чтобы гарантировать, что следующее совпадение не произойдет в начале), затем сопоставить / и символы слова, затем заменить на /*:

const repl = str => str.replace(/(?!^)\/\w+/g, '/*');
console.log(repl('/a/b/c/'));
console.log(repl('/x/z/'));
console.log(repl('/y/'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...