Javascript 要在两个字符之间匹配的RegExp

Javascript 要在两个字符之间匹配的RegExp,javascript,regex,Javascript,Regex,我正在寻找一个解决方案,以找到一个正则表达式,它将为我提供介于两个字符k和-之间的所有内容 示例:从42k12-b 我试着自己做一些正则表达式,但没有成功,因为我需要它来排除第一个和最后一个字符。我试过: k(.*)\- 但它包含了这两个角色 我怎样才能做到这一点 function createRegExp(str, startChar, endChar) { let regExpText = startChar + '(.*)' + endChar; let expressio

我正在寻找一个解决方案,以找到一个正则表达式,它将为我提供介于两个字符
k
-
之间的所有内容

示例:从
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'字符,它将返回字符串'abcdabcdabcd'字符串的粗体部分,但使用惰性量词
(.*)
,并给定相同的字符,它将返回字符串“abcdabcdacd”的粗体部分

.exec
函数返回一个包含两个元素的数组,第一个元素是表达式的完全匹配项,其中包括两个提供的字符和两个字符之间的字符,而第二个数组元素仅是两个提供的字符之间的字符


如上例所示,在动态创建此RegExp时请小心,因为某些字符需要在RegExp中转义,否则它们将被视为RegExp常规标记。

能否显示您正在使用的代码(不仅仅是regex模式)?对于
k
,您必须在匹配后将其去掉。对于
-
,您可以使用“向前看”在匹配之前停止。