RegExp匹配两个字符

时间:2017-06-10 00:29:50

标签: javascript regex

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

示例:从12

获取42k12-b

我尝试自己做一些正则表达式,但没有太大成功,因为我需要它排除第一个和最后一个字符。我尝试过:

k(.*)\-

但它包含了这两个字符。

我怎样才能做到这一点?

1 个答案:

答案 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通用标记。