Подстрока индекса совпадения захвата регулярного выражения Javascript

  • Автор темы KoT_B_Meshke
  • 40
  • Обновлено
  • 16, May 2024
  • #1
В этом примере я хочу захватить четвертое скрытие в S — это скрытие3;
 

window["getIndexValue"]=(...a)=>{

let string=a[0],substring=a[1],index=a[2];

let R=new RegExp("^((?:((?!"+substring+").)*"+substring+")){"+index+"}(?:((?!"+substring+").)*("+substring+"))");

let j=R.exec(string);

return j[j.length-1];

}

console.log(getIndexValue("jhfisd5hdsfh5jhsodf5zdfgdf5fgsd5sdgsd","5[a-z]",3));

//return 5f

console.log(getIndexValue("jhfisd5hdsfh5jhsodf5zdfgdf5fgsd5sdgsd","5[a-z]",2));

//return 5z

Код (JavaScript): я могу создать для этого функцию в собственном JavaScript — ecmascript6.

 var S="gwrtgwhide0regwtrghide1erthgrthide2rtgbwtghide3ertghtrwhide4wertgerghide5ertghwrtghide6ewrtghwrtghide7wertgqew"; var j=/^((?:((?!hide\d).)*hide\d)){3}(?:((?!hide\d).)*(hide\d))/.exec(S); console.log(j[j.length-1]);
Код (JavaScript):

KoT_B_Meshke


Рег
27 Nov, 2010

Тем
1

Постов
13

Баллов
23
  • 03, Jun 2024
  • #2
Это вопрос или утверждение? В любом случае ваше регулярное выражение выглядит болезненно и бессмысленно запутанным, а однобуквенные неописательные переменные никому не приносят никакой пользы.

тем более глобальное присвоение мучительно загадочной стрелочной функции - мусор --- в этот момент просто объявите чертову функция.

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

var

testString = 'gwrtgwhide0regwtrghide1erthgrthide2rtgbwtghide3ertghtrwhide4wertgerghide5ertghwrtghide6ewrtghwrtghide7wertgqew';

function findNumberSuffixedInString(needle, haystack, offset) {

var result = haystack.match(new RegExp('('+ needle + '\\d+)','g'));

if (!Number.isInteger(offset)) return result;

if (offset < 0) offset += result.length;

return result[offset];

}

// full array

console.log(findNumberSuffixedInString('hide', testString));

// unique index from beginning == hide3

console.log(findNumberSuffixedInString('hide', testString, 3));

// unique index from end == hide5

console.log(findNumberSuffixedInString('hide', testString, -3));

Код (разметка):
 

master-polymorphic


Рег
20 Sep, 2012

Тем
0

Постов
3

Баллов
3
  • 08, Jun 2024
  • #3
Если правда в том, что вы во всем правы, но я хотел научить этим выполнять сопоставление из одного и того же регулярного выражения без использования regexp.match из javascript, а путем выполнения самого регулярного выражения с использованием исключающих тегов (? i отрицание собственного исключения ((?! слово).) *, демонстрируя тем самым потенциал регулярных выражений, поскольку не все знают их потенциал.



Мне также нравится использовать стрелочные функции, чтобы научить другому способу выполнения функций, в основном показывая части ECMASCRIPT6. и поэтому люди видят универсальность javascript.

Это может быть сделано хуже или лучше, это зависит, но факт в том, что если бы вы хотели проиндексировать иглу из javascript, это можно было бы сделать разными способами, всеми из них.

более или менее верно, по мнению того или иного программиста.

Если бы я хотел просто использовать JavaScript, это было бы так же просто, как просто использовать разделение с начальными или конечными вариантами игл.

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

USW1


Рег
15 Nov, 2011

Тем
7

Постов
15

Баллов
85
Тем
49554
Комментарии
57426
Опыт
552966

Интересно