为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式匹配重复数字而不排序

正则表达式匹配重复数字而不排序

ibeautiful 2023-06-15 09:38:19
在这样的字符串中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 组值。


查看完整回答
反对 回复 2023-06-15
  • 1 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信