Я ищу решение, чтобы найти регулярное выражение, которое даст мне все, что находится между двумя символами k
и -
.
Пример: получите 12
из 42k12-b
Я пробовал самостоятельно выполнять некоторые регулярные выражения, но без особого успеха, поскольку мне нужно, чтобы исключить первого и последнего персонажа. Я попробовал:
k(.*)\-
Но он включает этих двух персонажей.
Как я могу это достичь?
function createRegExp(str, startChar, endChar) {
let regExpText = startChar + '(.*)' + endChar;
let expression = new RegExp(regExpText, 'g');
return expression.exec(str)[1];
}
Эта функция будет принимать 3 аргумента. Строка, символ, с которого начинается поиск, и символ, где заканчивается поиск, оба символа не включены в возвращаемый результат.
Группа захвата выражения в этом текущем формате (.*)
Будет жадной, поэтому, учитывая строки "abcdabcdabcd" и символы "a" и "d", она вернет полужирную часть строки "a bcdabcdabc d", но используя ленивый квантификатор (.*?)
и учитывая те же символы, он вернет эту полужирную часть строки "a bc dabcdabcd".
Функция .exec
возвращает массив с 2 элементами, первый из которых является полным совпадением выражения, который включает в себя оба предоставленных символа и символы между ними, тогда как второй элемент массива является только символами между двумя предоставленными символами.
Будьте осторожны при создании этого RegExp динамически, как в приведенном выше примере, потому что некоторые символы должны быть экранированы в RegExp, иначе они будут считаться как токены RegExp.