Создать регулярное выражение, чтобы отделить каждое слово от. (Точка) - PullRequest
1 голос
/ 05 февраля 2020

Я пытаюсь создать регулярное выражение для отделения каждого слова от . (точка) в JavaScript.

function myFunction() {
  var url = "in.k1.k2.k3.k4.com"
  var result
  var match
  if (match = url.match(/^[^\.]+\.(.+\..+)$/)) {
    console.log(match);
  }
}

Фактический результат:

match[0] : in.k1.k2.k3.k4.com
match[1] : k1.k2.k3.k4.com

Ожидается результат:

match[0] : in.k1.k2.k3.k4.com
match[1] : k1.k2.k3.k4.com
match[2] : k2.k3.k4.com
match[3] : k3.k4.com
match[4] : k4.com

Пожалуйста, помогите мне создать идеальное регулярное выражение.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Вместо регулярного выражения вы можете использовать комбинацию split() и map() для создания необходимого выходного массива. Попробуйте это:

function myFunction() {
  var arr = "in.k1.k2.k3.k4.com".split('.');
  var output = arr.map((v, i) => arr.slice(i).join('.'));
  
  console.log(output);
}

myFunction();
0 голосов
/ 05 февраля 2020

Использование регулярного выражения в этом случае может быть не лучшим выбором. Вы можете просто разделить вашу строку на . и затем присоединиться к ним, когда вам это нужно.

function recursivelySplitText(arrayOfString, output) {
  // check if the output is set, otherwise create it.
  if(!output) {
    output = [];
  }
  // we add the current value to the output
  output.push(arrayOfString.join('.'));
  // we remove the first element of the array
  arrayOfString.splice(0, 1);
  // if we just have one element left in the array ( com )  we return the array
  // otherwise, we call the function again with the newly splitted array.
  return arrayOfString.length === 1 ? output : recursivelySplitText(arrayOfString, output);
}

const text = 'in.k1.k2.k3.k4.com';
// we need to split it first to have an array of string rather than a string.
console.log(recursivelySplitText(text.split('.')));

Здесь я использовал рекурсию, потому что это весело, но это не единственный способ получить тот же результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...