我正在寻找一个解决方案,找到一个正则表达式,它可以为我提供两个字符k
和-
之间的所有内容。
示例:从12
42k12-b
我尝试自己做一些正则表达式,但没有太大成功,因为我需要它排除第一个和最后一个字符。我尝试过:
k(.*)\-
但它包含了这两个字符。
我怎样才能做到这一点?
答案 0 :(得分:1)
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 <的粗体部分strong> bcdabcdabc d'字符串,但使用延迟量词(.*?)
并给出相同的字符,它将返回字符串'a bc dabcdabcd'的粗体部分。< / p>
.exec
函数返回一个包含2个元素的数组,第一个是表达式的完全匹配,包括两个提供的字符和之间的字符,而第二个数组元素只是两个元素之间的字符两个提供的角色。
在动态创建此RegExp时请小心,如上例所示,因为某些字符需要在RegExp中进行转义,否则它们将被视为RegExp通用标记。