我正在尝试找到一个正则表达式,匹配不超过n个,例如三个,例如,出现一个字符;在三个字符的情况下,字符是“a”:
abbaa - 匹配;
ammaaa - 不匹配(连续三个a),有一个“a”,但整个表达式必须被丢弃,因为三个“a”“
谢谢。
答案 0 :(得分:8)
使用{m,n}
语法(如果您的环境提供它,可能会这样做。
{m,n}
允许m
到n
(包括)上一个字符的出现次数。
示例:
/a{0,3}/
匹配0到3次a
。
/a{3,}/
匹配3次或更多次。
/a{3}/
恰好匹配3次。
在以下示例中,我将上述语法与否定前瞻和否定后瞻配对。
(?<!a)a{0,3}(?!a)
匹配0到3次出现的a
,其中0-3次出现之前或之后没有a
。
答案 1 :(得分:2)
您可以指定一个角色,也可以将其概括为所有角色 此外,不确定您是否尝试测试或匹配整个字符串,但假设为 它是整个字符串。
广义
^(?:(\w)(?!\1{2})|\W)+$
解释
^ # Beginning of string
(?: # Cluster
( \w ) # (1), a word character
(?! \1{2} ) # Not 2 more of same in a sequence
| # or,
\W # Not a word character
)+ # End Cluster, 1 to many times
$ # End of string
您可以替换特定字符,而不是\w
和\W
通过替换你想要的东西。
字符a
的示例a
和[^a]
。
^(?:(a)(?!\1{2})|[^a])+$
或多个,例如[abc]
和[^abc]
^(?:([abc])(?!\1{2})|[^abc])+$