正则表达式检测字符重复

时间:2013-08-29 08:46:55

标签: javascript regex

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

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

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

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

的重复项
Wordwithone@here - match

Word@withduplicate@here - not

Word@withoneandone#here - match

是否可以使用regexp从一组字符中检测重复的字符? (@#as in sample)

1 个答案:

答案 0 :(得分:2)

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

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

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

[\s\S]*?[\s\S]*都有效,只是搜索顺序会有所不同:

  • *? lazy ,因此搜索重复内容将从相邻字符开始。
  • * greedy ,因此搜索将从字符串中的最后一个字符开始。

重点是允许任意数量的字符进入2个重复[\s\S]*之间。我使用[\s\S]来允许任何字符,而不是排除以下新行字符的.\n\r\u2028和{{1} }。