Javascript 正则表达式-匹配到那里';s等于2个特定字符的数量

Javascript 正则表达式-匹配到那里';s等于2个特定字符的数量,javascript,regex,Javascript,Regex,例如,如果我有以下句子: 一只猫在逃跑前咬了一条狗的屁股 如果我想使用的两个字符是“a”和“b”,那么我想匹配,直到“a”和“b”的数量相等为止,如下所示: 一只猫咬了一条狗的屁股 在上述情况下,句子有5个a和3个b。我想要达到我有3个a和3个b的程度 谢谢你的帮助。这是不可能的 bn不是,因此与正则表达式匹配在数学上是不可能的,即使使用增强的正则表达式也是如此 可以使用以下函数获取不使用正则表达式的范围: var input=“猫咬狗屁股b”; log(getRange(输入“a”、“b”)

例如,如果我有以下句子:

一只猫在逃跑前咬了一条狗的屁股

如果我想使用的两个字符是“a”和“b”,那么我想匹配,直到“a”和“b”的数量相等为止,如下所示:

一只猫咬了一条狗的屁股

在上述情况下,句子有5个a和3个b。我想要达到我有3个a和3个b的程度

谢谢你的帮助。

这是不可能的

bn不是,因此与正则表达式匹配在数学上是不可能的,即使使用增强的正则表达式也是如此

可以使用以下函数获取不使用正则表达式的范围:

var input=“猫咬狗屁股b”;
log(getRange(输入“a”、“b”);
函数getRange(输入,char1,char2){
var indexStart=-1;
变量count1=0,count2=0;
对于(变量i=0;i
var a=0,
b=0;
var结果=0;
变量模式=//克;
for(;patten.exec(“一只猫在逃跑前咬了一条狗的屁股”)!=null;){
如果(RegExp['$&']==“a”){
a++;
如果(a==b){
结果=模式指数;
}
}
如果(RegExp['$&']==“b”){
b++;
如果(a==b){
结果=模式指数;
}
}
}
console.log(“1~”+结果);

log(“一只猫在逃跑前咬了一条狗的屁股”。切片(0,结果))
在Javascript中,可能不是(还不确定),但可以在某些REs中完成:-语言中的常见RE引擎不限于正则语言。@NetMage它们是增强的正则表达式,而不完全是正则表达式。JS还增强了regexp,但它不够复杂,无法描述a^nb^n。考虑到
\1?+
相当于
(?>\1?
),并且(一些?)版本的
(?>)
可以用
(?=…)进行模拟\1
我不确定Javascript是否能够处理此问题。@NetMage如果可能的话,我希望看到JS中的regexp与a^n b^n匹配!但即使它这样做了,regexp仍然不应该被用来做OP试图做的事情。我最近发表了一篇文章,表明使用前向引用是可能的,不幸的是,JavaScript不支持前向引用。我也希望看到这一切完成,但我担心这是不可能的!“顺便说一下,朕也会功夫。" - Heh:)我认为如果字母是“a”,那么使用“else if”可以删除计算,但这是一个非常好的解决方案!我会将您的标记为正确,因为它最准确地回答了问题。它需要一个字符串并返回一个字符串,直到两个特定字符相等为止。