Javascript 在word中匹配两个相等的字符并替换为一个RE

Javascript 在word中匹配两个相等的字符并替换为一个RE,javascript,regex,Javascript,Regex,我想将两个相等的字符转换为单个字符,如bannana应该是香蕉//将“nn”删除为单个“n”。(除“aa”外,所有应按上述方式转换) 需要正则表达式来完成这些类型的工作。使用 下面是一个javascript示例: "khuddar".replace(/([^a])\1/g, "$1") // => "khudar" "maanas".replace(/([^a])\1/g, "$1") // => "maanas" [^a]-匹配的字符不是a (…)-匹配正则表达式并将其保存到

我想将两个相等的字符转换为单个字符,如
bannana应该是香蕉//将“nn”删除为单个“n”
。(除“aa”外,所有应按上述方式转换)

需要正则表达式来完成这些类型的工作。

使用

下面是一个javascript示例:

"khuddar".replace(/([^a])\1/g, "$1")
// => "khudar"
"maanas".replace(/([^a])\1/g, "$1")
// => "maanas"

  • [^a]
    -匹配的字符不是
    a
  • (…)
    -匹配正则表达式并将其保存到组1(2,3,…如果后面有更多括号)
  • \1
    -组1的反向参考。如果匹配的零件是
    b
    \1
    也请参考
    b

如果您只需要匹配任何字母,但
a
,则可以使用

.replace(/([b-z])\1/ig, "$1")

正则表达式解释:

  • ([b-z])
    -捕获组1捕获从
    b
    z
    的任何ASCII字母(和
    A
    z
    ,因为
    /i
    修饰符使模式不区分大小写)
  • \1
    -与上面的组捕获的文本值相匹配的一种模式(因此,模式匹配2个相同的ASCII字母)
在替换模式中,使用
$1
,将2个相同的ASCII字母替换为该字母的1个匹配项

var re=/([b-z])\1/gi;
var str='khuddar
maanas
hello
apple
F11'; 变量subst='$1'; var结果=str.replace(re,subst);
document.body.innerHTML=结果什么是编程语言?有些正则表达式引擎不能满足您的需要。我不想申请“aa”解释请解释什么?@higunjan,我添加了一个解释和一个指向正则表达式信息网站的链接,解释了反向引用(
\1
)。
.replace(/([b-z])\1/ig, "$1")