2

我使用表达式来检测字符串中重复的一个字符。

if (str.replace(/[^@]/g, '').length > 1) {...}

现在,我希望检测到重复的多个字符。

对于示例,让我们尝试检测 @ 或 # 的重复项:

Wordwithone@here - match

Word@withduplicate@here - not

Word@withoneandone#here - match

正则表达式是否可以从字符集中检测重复字符?(@# 如示例)

4

1 回答 1

2

您在评论中的尝试将在字符串中连续/([@])\1{2,}/ig搜索。 @

它只需要一个简单的修改就可以使它工作:

/([@#])[\s\S]*?\1/.test(inputString)

要么 要么[\s\S]*?[\s\S]*工作,只是搜索的顺序会有点不同:

  • *?惰性的,因此对重复的搜索将从相邻字符开始。
  • *贪婪的,所以搜索将从字符串中的最后一个字符开始。

关键是允许任意数量的字符介于 2 个副本之间[\s\S]*。我曾经[\s\S]允许任何字符,而不是排除.以下换行符:\n、、\r和。\u2028\u2029

于 2013-08-29T09:16:31.610 回答