例如,如果我有以下句子:
在逃跑之前,一只猫咬了一条狗在上面
如果我想要使用的2个字符是'a'和'b',那么我想匹配到等于'a'和'b'的点,如下所示:
一只猫咬着狗屁股
在上述情况下,句子有5个和3个。我想要达到3 a和3 b的程度。
感谢您的帮助。
答案 0 :(得分:2)
这是不可能的。
a n b n 不是regular,因此即使使用增强的正则表达式,在数学上也不可能与正则表达式匹配。
您可以使用以下函数来获取不使用正则表达式的范围:
var input = "a cat bit a dog on the butt b";
console.log(getRange(input, "a", "b"));
function getRange(input, char1, char2){
var indexStart = -1;
var count1 = 0, count2 = 0;
for(var i = 0; i < input.length; i++){
var char = input[i];
switch(char){
case char1:
count1 += 1; break
case char2:
count2 += 1; break;
}
if(char == char1 || char == char2){
if(indexStart == -1)
indexStart = i;
if(count1 == count2)
return [indexStart, i];
}
}
return [-1, -1];
}
答案 1 :(得分:1)
var a = 0,
b = 0;
var result = 0;
var patten = /./g;
for (;patten.exec("a cat bit a dog on the butt before running away") != null;) {
if (RegExp['$&'] == "a") {
a++;
if (a == b) {
result = patten.lastIndex;
}
}
if (RegExp['$&'] == "b") {
b++;
if (a == b) {
result = patten.lastIndex;
}
}
}
console.log("1~" + result);
console.log("a cat bit a dog on the butt before running away".slice(0,result));
&#13;