正则表达式以查找字符串中的特殊字符数

时间:2020-04-07 15:42:07

标签: regex string expression

仅当给定字符串中出现两次以上的特殊字符时,我才需要构成RegEx以产生输出。

1)abcd @@ qwer-匹配

2)abcd @ dsfsdg @ fffj-匹配

3)abcd @ qwetg-不匹配

4)acwexyz-不算数

5)abcd @ ds @ $%fsdg @ fffj-匹配

有人可以帮我吗?

注意:我需要在任何一种现有工具中而不是任何编程语言中使用此正则表达式。

1 个答案:

答案 0 :(得分:2)

OP编辑后更新
编辑后的OP引入了少量额外的复杂性,因此完全需要使用不同的模式。这里的关键是(a)现在有一组非常有限的“特殊字符”,并且(b)这些字符必须在字符串的任何位置至少出现两次(c)。

要实现此目的,您将使用类似以下内容的

(?:.*?[@#$%].*?){2,}
  1. 设置一个非捕获组,
  2. 其中包含任意数量的字符,后跟
  3. 集合@#$%中的任何字符
  4. 后跟任意数量的字符
  5. 确保此模式在给定的字符串中发生两次。

原始答案
通过“特殊字符”,我假设您的意思是标准字母数字字符之外的任何内容。您可以在大多数Regex版本中使用以下模式:

([^A-Za-z0-9])\1

这(a)创建一组所有字符(不包括字母数字字符)并将其与该字符匹配,然后(b)检查该字符是否相邻。

Regex101