This website requires JavaScript.
原创

正则之如何匹配出相同字符出现过n次的内容

2020.11.17 13:49 

1 人喜欢
987 次阅读
0 条评论

哈哈哈哈,好久没发博博了

今早写正则报了个Range out of order in character class错

这都什么鬼,后面查了下,原来是…字符范围的原因,而范围又因“-”符而引起。。

噗,进入正题再慢慢插入范围的问题

如何匹配相同字符出现过N次的内容?

'!!.,??,.-'.match(/[~!-+?,.;]{2}/g) // ["!!", ".,", "??", ",."]

/* 完犊子,这一匹配有BUG,只匹配出指定字符中随意出现过两次的内容。。完全不符合“相同字符”的规则啊 */
/* 这时候又突发奇想,有了,\1,取上一次匹配到的内容 */

'!!.,??,.-'.match(/([~!-+?,.;])\1/g) // ["!!", "??"]

/* 不错不错,达到我心之所想了,该采集的都采集出来了。这时候又突然的往 搜索字符 后面多加了一个 -符 */

'!!.,??,.--'.match(/([~!-+?,.;])\1/g) // ["!!", "??"]

/* ?????????--怎么不搜出来??? */
/* 然后突然想了下,,这个-符好像有着范围内的深意啊?a-zA-Z0-9等等。。都是因-而引起,难道说这个正则中的!-+,是指匹配!至+符中间的字符,然后采取了\-试试。。果不其然,成了 */

'!!.,??,.--'.match(/([~!\-+?,.;])\1/g) // ["!!", "??", "--"]
范围
image.png
  • 😃
  • 😂
  • 😅
  • 😉
  • 😌
  • 😔
  • 😓
  • 😘
  • 😡
  • 😭
  • 😱
  • 😳
  • 😵
  • 🌚
  • 👍
  • 👎
  • 💪
  • 🌹
  • 💊
  • 🇨🇳
  • 🇺🇸