在这样的字符串中16,17,22,22,22,22,20,16我试图在不排序的情况下匹配重复的数字。我尝试了(\d+)\1+很多变体,但它不起作用。预先感谢您的帮助。
1 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
您可以使用
console.log("16,17,22,22,22,22,20,16".match(
/\b(\d+)\b(?:(?<=\b\1\b.*\b\1\b)|(?=.*\b\1\b))/g
))
请参阅正则表达式演示
细节
\b(\d+)\b
- 捕获到第 1 组中的一个或多个数字,这些数字用单词边界括起来(?:(?<=\b\1\b.*\b\1\b)|(?=.*\b\1\b))
- 匹配两种模式之一的非捕获组:(?<=\b\1\b.*\b\1\b)
- 一个位置紧接第 1 组中捕获的相同值(作为一个完整的单词),然后是除换行符之外的任何零个或多个字符,然后是第 1 组中的值(第二个仅匹配\b(\d+)\b
自后视位于第 1 组之后)|
- 或者(?=.*\b\1\b)
- 一个位置紧跟任何零个或多个字符,而不是尽可能多的换行字符,然后是整个单词的第 1 组值。
添加回答
举报
0/150
提交
取消