javascript - 如何使用正则表达式在字符串中找到没有相邻重复项的第一个字符?

标签 javascript regex string

我有一个问题,需要找到没有相邻重复项的第一个字符。我想知道如何使用正则表达式来做到这一点。这是我认为应该的。 例如 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组中除换行符外的任意字符

Regex demo

如果你想获得多个匹配并且你的字符串不是以连续的字符开头,你可以省略 ^ anchor :

Regex demo

const regex = /(?:(.)\1+)+(.)/;
const str = `aabbbcddg`;
console.log(str.match(regex)[2]);

关于javascript - 如何使用正则表达式在字符串中找到没有相邻重复项的第一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55844270/

相关文章:

javascript - 如何使用 angularJs 在页面中显示数组数据

javascript - Cloudboost。初学者。如何显示查询示例?

javascript - AngularJS 两种方式绑定(bind)数学运算

java - 正则表达式匹配字母数字字符和一个 *,总长度应为 3

javascript - Ajax调用返回函数而不是数据

javascript - 用jquery&regex完成的电话号码格式

javascript - 如何在js中用正斜杠替换反斜杠

java - 这个字符串构造函数的实现如何工作(java)?

python - 如何测试字符串是否以大写字母开头?

string - 删除字符串数组中重复项的最佳算法