我想将两个相等的字符转换为单个字符,如bannana should be banana //remove "nn" into single "n"
。 (除了:" aa"所有都应该如上所述转换)
i/p : khuddar >> o/p : khudar
i/p : maanas >> o/p : maanas
i/p : hello >> o/p : helo
i/p : apple >> o/p : aple
需要正则表达式来完成这些类型的工作。
答案 0 :(得分:2)
使用capturing group and backreference。
这是一个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
。 答案 1 :(得分:0)
如果您只需匹配任何字母而a
,则可以使用
.replace(/([b-z])\1/ig, "$1")
请参阅regex demo
正则表达式解释:
([b-z])
- 捕获第1组捕获从b
到z
(以及A
到Z
的任何ASCII字母,因为/i
修饰符正在制作模式不区分大小写)\1
- 与inline backreference匹配的文本值与上面的组匹配(因此,模式匹配2个相同的ASCII字母)在替换模式中,使用$1
numbered replacement backreference替换2个相同的ASCII字母,其中1个字母出现。
var re = /([b-z])\1/gi;
var str = 'khuddar<br/>maanas<br/>hello<br/>apple<br/>F11';
var subst = '$1';
var result = str.replace(re, subst);
document.body.innerHTML = result;
&#13;