我有一个问题,需要找到没有相邻重复项的第一个字符。我想知道如何使用正则表达式来做到这一点。这是我认为应该的。
例如 string=aabbbcddg
答案是 c
。
const paragraph='aabbbcddg';
console.log(paragraph.match(/(.)\1{1}/));
或
const paragraph='aabbbcddg';
console.log(paragraph.match(/[.]{1}/));
您能解释一下为什么我的解决方案不起作用吗?
最佳答案
你的模式(.)\1{1}
(你可以省略{1}
)匹配字符串中的2个连续字符并且不将后面的字符带入帐户。
您可以匹配字符串 ^
开头的相邻字符,然后重复 1+ 次。然后在第 2 组中捕获第一个字符:
^(?:(.)\1+)+(.)
^
字符串开始(?:
非捕获组(.)\1+
捕获组 1 中除换行符外的任何字符并重复反向引用\1
1+ 次
)+
关闭非捕获组并重复1+次 (.) 匹配第2组中除换行符外的任意字符
如果你想获得多个匹配并且你的字符串不是以连续的字符开头,你可以省略 ^
anchor :
const regex = /(?:(.)\1+)+(.)/;
const str = `aabbbcddg`;
console.log(str.match(regex)[2]);
关于javascript - 如何使用正则表达式在字符串中找到没有相邻重复项的第一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55844270/