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

  • Автор темы Malusik
  • Обновлено
  • 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):

Malusik


Рег
29 Mar, 2011

Тем
86

Постов
220

Баллов
660
  • 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));


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

Tevedendy


Рег
20 Sep, 2012

Тем
67

Постов
197

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

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

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

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

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

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

USW1


Рег
15 Nov, 2011

Тем
89

Постов
206

Баллов
691
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно